Ybadoo - Soluções em Software Livre
Tutoriais
Programação Orientada a Objetos

Desenvolva uma classe chamada Square para representar um quadrado, ou seja, um quadrilátero regular com quatro lados de mesmo comprimento. A classe possui um único atributo denominado side, do tipo double, que representa o lado do quadrado. O construtor da classe recebe como parâmetro o lado do quadrado, cujo valor deve ser maior ou igual a zero. O lado do quadrado pode ser obtido pelo usuário por meio do método getSide(). A classe também apresenta os métodos area(), diagonal() e perimeter(), que retornam a área, a diagonal e o perímetro do quadrado, respectivamente. A área de um quadrado de lado l é obtida pela fórmula l2. A diagonal de um quadrado de lado l é obtida pela fórmula √2 * l. O perímetro de um quadrado de lado l é obtido pela fórmula 4 * l.

 

Terminal

ybadoo@server:~$ ./application
Implementação na Linguagem de Programação Java Implementação na Linguagem de Programação C++
Diagrama de Classes na Linguagem de Programação Java Square.java Application.java
Diagrama de Classes
Diagrama de Classes na Linguagem de Programação Java

Arquivo Square.java

/*************************************************************************
 * Copyright (C) 2009/2018 - 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.tutorial01.exercicio02;

/**
 * Classe responsavel pela representacao de um quadrado
 */
public class Square
{
  /**
   * Lado do quadrado
   */
  private double side;

  /**
   * Construtor para inicializar o lado do quadrado
   *
   * @param side lado do quadrado
   */
  public Square(double side)
  {
    if(side >= 0.0)
    {
      this.side = side;
    }
    else
    {
      this.side = 0.0;
    }
  }

  /**
   * Retornar o lado do quadrado
   *
   * @return lado do quadrado
   */
  public double getSide()
  {
    return side;
  }

  /**
   * Retornar a area do quadrado
   *
   * @return area do quadrado
   */
  public double area()
  {
    return Math.pow(side, 2.0);
  }

  /**
   * Retornar a diagonal do quadrado
   *
   * @return diagonal do quadrado
   */
  public double diagonal()
  {
    return Math.sqrt(2.0) * side;
  }

  /**
   * Retornar o perimetro do quadrado
   *
   * @return perimetro do quadrado
   */
  public double perimeter()
  {
    return 4.0 * side;
  }
}

Arquivo Application.java

/*************************************************************************
 * Copyright (C) 2009/2018 - 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.tutorial01.exercicio02;

import java.util.Scanner;

/**
 * Classe responsavel pela execucao da classe Square
 */
public class Application
{
  /**
   * Construtor para inicializar a execucao da classe Square
   */
  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 quadrado: ");

    double side = scanner.nextDouble();

    scanner.close();

    Square square = new Square(side);

    System.out.print("O lado do quadrado é: ");
    System.out.println(square.getSide());

    System.out.print("A área do quadrado é: ");
    System.out.println(square.area());

    System.out.print("A diagonal do quadrado é: ");
    System.out.println(square.diagonal());

    System.out.print("O perímetro do quadrado é: ");
    System.out.println(square.perimeter());
  }
}
Diagrama de Classes na Linguagem de Programação C++ Square.hpp Square.cpp Application.cpp makefile
Diagrama de Classes
Diagrama de Classes na Linguagem de Programação C++

Arquivo Square.hpp

/*************************************************************************
 * Copyright (C) 2009/2018 - 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 SQUARE_HPP
#define SQUARE_HPP

/**
 * Classe responsavel pela representacao de um quadrado
 */
class Square
{
  public:

  /**
   * Construtor para inicializar o lado do quadrado
   *
   * @param side lado do quadrado
   */
  Square(const double side);

  /**
   * Retornar o lado do quadrado
   *
   * @return lado do quadrado
   */
  double getSide() const;

  /**
   * Retornar a area do quadrado
   *
   * @return area do quadrado
   */
  double area() const;

  /**
   * Retornar a diagonal do quadrado
   *
   * @return diagonal do quadrado
   */
  double diagonal() const;

  /**
   * Retornar o perimetro do quadrado
   *
   * @return perimetro do quadrado
   */
  double perimeter() const;

  private:

  /**
   * Lado do quadrado
   */
  double side;
};

#endif

Arquivo Square.cpp

/*************************************************************************
 * Copyright (C) 2009/2018 - 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 "Square.hpp"

/**
 * Construtor para inicializar o lado do quadrado
 *
 * @param side lado do quadrado
 */
Square::Square(const double side)
{
  if(side >= 0.0)
  {
    Square::side = side;
  }
  else
  {
    Square::side = 0.0;
  }
}

/**
 * Retornar o lado do quadrado
 *
 * @return lado do quadrado
 */
double Square::getSide() const
{
  return side;
}

/**
 * Retornar a area do quadrado
 *
 * @return area do quadrado
 */
double Square::area() const
{
  return pow(side, 2.0);
}

/**
 * Retornar a diagonal do quadrado
 *
 * @return diagonal do quadrado
 */
double Square::diagonal() const
{
  return sqrt(2.0) * side;
}

/**
 * Retornar o perimetro do quadrado
 *
 * @return perimetro do quadrado
 */
double Square::perimeter() const
{
  return 4.0 * side;
}

Arquivo Application.cpp

/*************************************************************************
 * Copyright (C) 2009/2018 - 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 "Square.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 quadrado: ";
  cin  >> side;

  Square* square = new Square(side);

  cout << "O lado do quadrado é: "
       << square->getSide() << endl;

  cout << "A área do quadrado é: "
       << square->area() << endl;

  cout << "A diagonal do quadrado é: "
       << square->diagonal() << endl;

  cout << "O perímetro do quadrado é: "
       << square->perimeter() << endl;

  delete square;

  return 0;
}

Arquivo makefile

##########################################################################
 # Copyright (C) 2009/2018 - 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 Square.o -c Square.cpp

g++ -o Application.o -c Application.cpp

g++ -o application Square.o Application.o