Desenvolva uma classe chamada Decagon
para representar um decágono, ou seja, um polígono regular com dez lados de mesmo comprimento. A classe possui um único atributo denominado side
, do tipo double
, que representa o lado do decágono e cujo valor deve ser maior ou igual a zero e menor ou igual a vinte. A classe possui dois construtores: o primeiro configura o lado do decágono com o valor padrão 1.0
, e o segundo recebe como parâmetro o lado do decágono. O lado do decágono pode ser obtido e alterado pelo usuário por meio dos métodos getSide()
e setSide()
, respectivamente. A classe também apresenta os métodos area()
e perimeter()
, que retornam a área e o perímetro do decágono, respectivamente. A área de um decágono de lado l é obtida pela fórmula 5 / 2 * (√5 + 2 * √5) * l2. O perímetro de um decágono de lado l é obtido pela fórmula 10 * l.
/*************************************************************************
* Copyright (C) 2009/2024 - Cristiano Lehrer (cristiano@ybadoo.com.br) *
* Ybadoo - Solucoes em Software Livre (ybadoo.com.br) *
* *
* Permission is granted to copy, distribute and/or modify this document *
* under the terms of the GNU Free Documentation License, Version 1.3 or *
* any later version published by the Free Software Foundation; with no *
* Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A *
* A copy of the license is included in the section entitled "GNU Free *
* Documentation License". *
* *
* Ubuntu 16.10 (GNU/Linux 4.8.0-39-generic) *
* OpenJDK Version "1.8.0_121" *
* OpenJDK 64-Bit Server VM (build 25.121-b13, mixed mode) *
*************************************************************************/
package com.ybadoo.tutoriais.poo.tutorial02.exercicio06;
/**
* Classe responsavel pela representacao de um decagono
*/
public class Decagon
{
/**
* Lado do decagono
*/
private double side;
/**
* Construtor para inicializar o decagono
*/
public Decagon()
{
this(1.0);
}
/**
* Construtor para inicializar o lado do decagono
*
* @param side lado do decagono
*/
public Decagon(double side)
{
setSide(side);
}
/**
* Retornar o lado do decagono
*
* @return lado do decagono
*/
public double getSide()
{
return side;
}
/**
* Configurar o lado do decagono
*
* @param side lado do decagono
*/
public void setSide(double side)
{
if((side >= 0.0) && (side <= 20.0))
{
this.side = side;
}
else
{
if(side > 20.0)
{
this.side = 20.0;
}
else
{
this.side = 0.0;
}
}
}
/**
* Retornar a area do decagono
*
* @return area do decagono
*/
public double area()
{
return 5.0 / 2.0 * (Math.sqrt(5.0) + 2.0 * Math.sqrt(5.0))
* Math.pow(side, 2.0);
}
/**
* Retornar o perimetro do decagono
*
* @return perimetro do decagono
*/
public double perimeter()
{
return 10.0 * side;
}
}
/*************************************************************************
* Copyright (C) 2009/2024 - Cristiano Lehrer (cristiano@ybadoo.com.br) *
* Ybadoo - Solucoes em Software Livre (ybadoo.com.br) *
* *
* Permission is granted to copy, distribute and/or modify this document *
* under the terms of the GNU Free Documentation License, Version 1.3 or *
* any later version published by the Free Software Foundation; with no *
* Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A *
* A copy of the license is included in the section entitled "GNU Free *
* Documentation License". *
* *
* Ubuntu 16.10 (GNU/Linux 4.8.0-39-generic) *
* OpenJDK Version "1.8.0_121" *
* OpenJDK 64-Bit Server VM (build 25.121-b13, mixed mode) *
*************************************************************************/
package com.ybadoo.tutoriais.poo.tutorial02.exercicio06;
import java.util.Scanner;
/**
* Classe responsavel pela execucao da classe Decagon
*/
public class Application
{
/**
* Construtor para inicializar a execucao da classe Decagon
*/
private Application()
{
}
/**
* Metodo principal da linguagem de programacao Java
*
* @param args argumentos da linha de comando (nao utilizado)
*/
public static void main(String[] args)
{
Scanner scanner = new Scanner(System.in);
System.out.print("Forneça o valor do lado do decágono: ");
double side = scanner.nextDouble();
scanner.close();
Decagon decagon = new Decagon(side);
System.out.print("O lado do decágono é: ");
System.out.println(decagon.getSide());
System.out.print("A área do decágono é: ");
System.out.println(decagon.area());
System.out.print("O perímetro do decágono é: ");
System.out.println(decagon.perimeter());
}
}
/*************************************************************************
* Copyright (C) 2009/2024 - Cristiano Lehrer (cristiano@ybadoo.com.br) *
* Ybadoo - Solucoes em Software Livre (ybadoo.com.br) *
* *
* Permission is granted to copy, distribute and/or modify this document *
* under the terms of the GNU Free Documentation License, Version 1.3 or *
* any later version published by the Free Software Foundation; with no *
* Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A *
* A copy of the license is included in the section entitled "GNU Free *
* Documentation License". *
* *
* Ubuntu 16.10 (GNU/Linux 4.8.0-39-generic) *
* g++ (Ubuntu 6.2.0-5ubuntu12) 6.2.0 20161005 *
*************************************************************************/
#ifndef DECAGON_HPP
#define DECAGON_HPP
/**
* Classe responsavel pela representacao de um decagono
*/
class Decagon
{
public:
/**
* Construtor para inicializar o decagono
*/
Decagon();
/**
* Construtor para inicializar o lado do decagono
*
* @param side lado do decagono
*/
Decagon(const double side);
/**
* Retornar o lado do decagono
*
* @return lado do decagono
*/
double getSide() const;
/**
* Configurar o lado do decagono
*
* @param side lado do decagono
*/
void setSide(const double side);
/**
* Retornar a area do decagono
*
* @return area do decagono
*/
double area() const;
/**
* Retornar o perimetro do decagono
*
* @return perimetro do decagono
*/
double perimeter() const;
private:
/**
* Lado do decagono
*/
double side;
};
#endif
/*************************************************************************
* Copyright (C) 2009/2024 - Cristiano Lehrer (cristiano@ybadoo.com.br) *
* Ybadoo - Solucoes em Software Livre (ybadoo.com.br) *
* *
* Permission is granted to copy, distribute and/or modify this document *
* under the terms of the GNU Free Documentation License, Version 1.3 or *
* any later version published by the Free Software Foundation; with no *
* Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A *
* A copy of the license is included in the section entitled "GNU Free *
* Documentation License". *
* *
* Ubuntu 16.10 (GNU/Linux 4.8.0-39-generic) *
* g++ (Ubuntu 6.2.0-5ubuntu12) 6.2.0 20161005 *
*************************************************************************/
#include <cmath>
#include "Decagon.hpp"
/**
* Construtor para inicializar o decagono
*/
Decagon::Decagon()
{
setSide(1.0);
}
/**
* Construtor para inicializar o lado do decagono
*
* @param side lado do decagono
*/
Decagon::Decagon(const double side)
{
setSide(side);
}
/**
* Retornar o lado do decagono
*
* @return lado do decagono
*/
double Decagon::getSide() const
{
return side;
}
/**
* Configurar o lado do decagono
*
* @param side lado do decagono
*/
void Decagon::setSide(const double side)
{
if((side >= 0.0) && (side <= 20.0))
{
Decagon::side = side;
}
else
{
if(side > 20.0)
{
Decagon::side = 20.0;
}
else
{
Decagon::side = 0.0;
}
}
}
/**
* Retornar a area do decagono
*
* @return area do decagono
*/
double Decagon::area() const
{
return 5.0 / 2.0 * (sqrt(5.0) + 2.0 * sqrt(5.0)) * pow(side, 2.0);
}
/**
* Retornar o perimetro do decagono
*
* @return perimetro do decagono
*/
double Decagon::perimeter() const
{
return 10.0 * side;
}
/*************************************************************************
* Copyright (C) 2009/2024 - Cristiano Lehrer (cristiano@ybadoo.com.br) *
* Ybadoo - Solucoes em Software Livre (ybadoo.com.br) *
* *
* Permission is granted to copy, distribute and/or modify this document *
* under the terms of the GNU Free Documentation License, Version 1.3 or *
* any later version published by the Free Software Foundation; with no *
* Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A *
* A copy of the license is included in the section entitled "GNU Free *
* Documentation License". *
* *
* Ubuntu 16.10 (GNU/Linux 4.8.0-39-generic) *
* g++ (Ubuntu 6.2.0-5ubuntu12) 6.2.0 20161005 *
*************************************************************************/
#include <iostream>
#include "Decagon.hpp"
/**
* Metodo principal da linguagem de programacao C++
*
* @param argc quantidade de argumentos na linha de comando (nao utilizado)
* @param argv argumentos da linha de comando (nao utilizado)
*/
int main(int argc, char** argv)
{
using namespace std;
double side;
cout << "Forneça o valor do lado do decágono: ";
cin >> side;
Decagon* decagon = new Decagon(side);
cout << "O lado do decágono é: "
<< decagon->getSide() << endl;
cout << "A área do decágono é: "
<< decagon->area() << endl;
cout << "O perímetro do decágono é: "
<< decagon->perimeter() << endl;
delete decagon;
return 0;
}
##########################################################################
# Copyright (C) 2009/2024 - Cristiano Lehrer (cristiano@ybadoo.com.br) #
# Ybadoo - Solucoes em Software Livre (ybadoo.com.br) #
# #
# Permission is granted to copy, distribute and/or modify this document #
# under the terms of the GNU Free Documentation License, Version 1.3 or #
# any later version published by the Free Software Foundation; with no #
# Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A #
# A copy of the license is included in the section entitled "GNU Free #
# Documentation License". #
# #
# Ubuntu 16.10 (GNU/Linux 4.8.0-39-generic) #
# gcc/g++ (Ubuntu 6.2.0-5ubuntu12) 6.2.0 20161005 #
##########################################################################
g++ -o Decagon.o -c Decagon.cpp
g++ -o Application.o -c Application.cpp
g++ -o application Decagon.o Application.o