Técnicas de Programação:

Documentos relacionados
Programação Orientada a Objetos Aula I Declaração de classes, métodos construtores. Prof.: Bruno E. G. Gomes IFRN

Sobrecarga de Operadores

Fundamentos de Programação

Fundamentos de Programação 2

Computação L2. Linguagem C++ Observação: Material Baseado na Disciplina Computação Eletrônica.

Introdução a classes e objetos. Prof. Marcelo Roberto Zorzan Prof a. Rachel Reis

ORIENTAÇÃO A OBJETOS SISTEMAS DE INFORMAÇÃO DR. EDNALDO B. PIZZOLATO

Laboratório de programação II

//conteúdo do arquivo Matriz.h class Matriz { private: int *elementos; int numerodelinhas; int numerodecolunas; void setnumerodelinhas(int); void

Programação científica C++

Física Computacional 7 Classes

Namespaces, Classes e Métodos.

Estruturas da linguagem C. 1. Identificadores, tipos primitivos, variáveis e constantes, operadores e expressões.

Overloading de Operadores

C com introdução a OO

Estrutura de dados 1. Ponteiros

Linguagem de Programação C++

Linguagem de Programação C++

Programação Orientada a Objetos

Overloading de Operadores

Aula 6: Comandos Estruturados Estrutura Condicional

Aula 27: Estruturas heterogêneas e alocação dinâmica

Classes, Métodos e Propriedades

Fábio da Fontoura Beltrão Felipe Augusto Chies Lucas Fialho Zawacki Marcos Vinicius Cavinato Matheus de Carvalho Proença

PCS Laboratório de Programação Orientada a Objetos 1a. Prova. 02 de Setembro de 2015

Fundamentos de Programação

# Estrutura de Dados # Aula - Revisão de C/C++ na Prática. Prof. Leinylson Fontinele Pereira

//conteúdo do arquivo pacote.h

Classes e Objetos. Prof. Leonardo Barreto Campos 1

Aula 9 Agregado Heterogêneo Ponteiro. prof Leticia Winkler

Aula 8 Comandos de Seleção

Exercícios... Capítulo 15. if62c. prof. Robinson Vida Noronha. Monday, March 23, 15

Programação Orientada a Objetos. Métodos e Atributos. Métodos. Métodos. Alexandre César Muniz de Oliveira. Parte III

Encapsulamento e Métodos (Construtores e Estáticos) João Paulo Q. dos Santos

Programação Estruturada e Orientada a Objetos. Objetos e Métodos

ANHANGUERA ESTRUTURA DE DADOS AULA 04 MATRIZES, LISTAS E ALOCAÇÃO DINÂMICA. Prof. Thomás da Costa

Algoritmos e Programação 2. Objetos e Classes em Java. Classes. Revisão. Definições de classes incluem (geralmente):

Introdução à Programação. Conceitos Básicos de Orientação a Objetos

12. SOBRECARGA DE OPERADOR

Programação Orientada a Objetos para Redes de Computadores

Programação Orientada a Objetos para Redes de Computadores. Empacotador de Pré-processador. Empacotador de. Primeiro Exemplo Usando Classes em C++

Programação de Computadores I Introdução ao C PROFESSORA CINTIA CAETANO

Programação Orientada a Objetos CLASSES E OBJETOS

Análise de Programação

Aula 26: Estruturas heterogêneas

Programação científica C++

Classes e Encapsulamento

Classes e Objetos INTRODUÇÃO À ORIENTAÇÃO A OBJETOS COM JAVA - MÓDULO II. Classes. Objetos. Um modelo para a criação de objetos

Centro Universitário Franciscano Curso de Sistemas de Informação Disciplina de algoritmos e programação II. Ponteiros

Aula 24: Ponteiros e Alocação Dinâmica

PCS3111. Laboratório de Programação Orientada a Objetos para Engenharia Elétrica. Aula 6: Polimorfismo

Linguagem de Programação C++

Orientação a objetos. Programação. Orientada a Objetos. Orientação a objetos. Orientação a objetos. Abstração e encapsulamento

Instituto Federal de Educação, Ciência e Tecnologia do RN Câmpus Currais Novos. LINGUAGEM C++ VARIÁVEIS COMPOSTAS Arrays Aula I

Classes e Objetos. Sintaxe de classe em Java

LISTA DE EXERCÍCIOS 2

Linguagem de Programação Orientada a Objeto Construtores e Sobrecarga

Aula 25: Alocação Dinâmica

Programação Orientada a Objetos

Algoritmos II prof. Daniel Oliveira

Linguagem de Programação II Implementação

Introdução à linguagem C++

Física Computacional 11 Classes

UNIFEI Disciplina Professor

Puca Huachi Vaz Penna

UNIVERSIDADE FEDERAL DO RIO GRANDE DO NORTE ESCOLA DE CIÊNCIAS E TECNOLOGIA. ECT1203 Linguagem de Programação Turma Prof.

Paradigmas de Programação. Java First-Tier: Aplicações. Orientação a Objetos em Java (I) Nomenclatura. Paradigma OO. Nomenclatura

Programação Orientada a Objetos para Redes de Computadores

Módulo 5. Programação Orientada a Objetos. Programação Orientada a Objetos I Java (Rone Ilídio)

Aula 10 Comandos de Repetição

INFORMÁTICA APLICADA AULA 03 LINGUAGEM DE PROGRAMAÇÃO C++

Parte IV. Linguagens de Programação. Relembrando da Última Aula... Empacotador de Préprocessadores. Primeiro Exemplo Usando Classes em C++

Linguagens de Programação

Linguagens de Programação

Aula 4: Introdução à Linguagem C++

Aula 14: Funções Passagem de Parâmetros por Referência

UNIVERSIDADE FEDERAL DO RIO GRANDE DO NORTE ESCOLA DE CIÊNCIAS E TECNOLOGIA. ECT1203 Linguagem de Programação Turma Prof.

ORIENTAÇÃO A OBJETOS SISTEMAS DE INFORMAÇÃO DR. EDNALDO B. PIZZOLATO

Matrizes. Estrutura de Dados. Universidade Federal de Juiz de Fora Departamento de Ciência da Computação 1 / 67

C++ - Sobrecarga de Operadores

INFORMÁTICA APLICADA AULA 05 LINGUAGEM DE PROGRAMAÇÃO C++

INF1636 PROGRAMAÇÃO ORIENTADA A OBJETOS

CIÊNCIA DA COMPUTAÇÃO - LINGUAGEM DE PROGRAMAÇÃO II REVISÃO POO

Redefinição de Operadores

EXPRESSÕES BOOLEANAS. Ex: boolean b = false; // declara uma variável do tipo boolean e atribui false

Friends e Sobrecarga

Programação C/C++ Slide 5 Nielsen Castelo Damasceno

Retangulo::Retangulo (int x0, int y0, int lado1, int lado2) { this->xref = x0; this->yref = y0; this->lado1 = lado1; this->lado2 = lado2; }

Programação Avançada C++ Slide 12 Nielsen Castelo Damasceno

INF1337 LINGUAGEM DE PROGRAMAÇÃO ORIENTADA A OBJETOS

LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA

Linguagens de Programação. Parte IV. Relembrando da Última Aula... Sobrecarga de Operadores. Fundamentos de Sobrecarga de Operadores

Aula 12: Funções. CI208 - Programação de Computadores. Prof. MSc. Diego Roberto Antunes

Algoritmos e Programação de Computadores Profs: Ronaldo Castro de Oliveira Anilton Joaquim da Silva

Linguagem de Programação III

Sobrecarga. Algoritmos e Programação II. Aula 3 Sobrecarga

ponteiros INF Programação I Prof. Roberto Azevedo

Aula 05: Condicionais (Parte 2)

Linguagem de Programação C++ Se analisarmos a manipulação do objeto c, efetuada no exercício anterior, e compararmos com o que acontece em um banco

Conceitos Básicos da Programação OO

Transcrição:

Técnicas de Programação: Programação Orientada a Objeto PROF. PROTÁSIO DEE-UFPB

Classes e Objetos Classe É uma estrutura de dados que pode conter: Objeto Dados, e Funções. É uma instância de uma classe. 2 Pode-se fazer a seguinte analogia em termos de variáveis: Uma classe poderia ser um tipo de dado int, char,... Um objeto pode ser uma variável int a, char x,...

Declaração de classes Classes são declaradas pela palavra-chave class 3 class nome_da_classe{ Especificador_de_acesso_1: membro1; Ξ Especificador_de_acesso_2: membroa; Ξ ; nome_da_classe É um identificador válido para a classe. Especificador_de_acesso private: Membros privados podem ser acessados somente por membros da mesma classe. Membros públicos podem ser acessados em qualquer escopo em que a classe é visível.

Declaração de classes Classes são declaradas pela palavra-chave class 4 class nome_da_classe{ Especificador_de_acesso_1: membro1; Ξ Especificador_de_acesso_2: membroa; Ξ ; Exemplo: private: void setar_valores (int, int); int area (void); ; Membros da Classe

Declaração de classes Por padrão, todos os membros declarados em um especificador de acesso são privados Assim, 5 private: void setar_valores (int, int); int area (void); ; ; void setar_valores (int, int); int area (void);

Declaração de classes A classe Retangulo contém 4 membros: x e y: dados-membros setar_valores e area: funções-membros Como declarado, x e y são privados, assim só podem ser acessados pelas funções-membros. Como declarado, as funções-membros podem ser acessadas externamente. 6 ; void setar_valores (int, int); int area (void);

Criando (instanciando) um objeto Abaixo tem-se um exemplo em que o objeto Ret é instanciado (criado) 7 ; void setar_valores (int, int); int area (void); Retangulo Ret;

Criando (instanciando) um objeto Abaixo tem-se um outro meio para instanciar o objeto Retang 8 void setar_valores (int, int); int area (void); Ret;

Usando Objetos #include <iostream> using namespace std; 9 void setar_valores (int, int); int area () {return (x*y); ; Operador de Resolução de Escopo void Retangulo :: setar_valores (int a, int b) { x = a; y = b; int main () { Retangulo Ret; Ret.setar_valores(3, 4); cout << Area = " << Ret.area(); return 0;

#include <iostream> using namespace std; 10 void setar_valores (int, int); int area () {return (x*y); ; void Retangulo :: setar_valores (int a, int b) { x = a; y = b; int main () { Retangulo Ret; Ret.setar_valores(3, 4); cout << Area = " << Ret.area(); cout << x = " << x << y = " << y; return 0; Imprimindo o valores de x e y Que aconteceu? Por que? x e y não são variáveis no escopo de main

#include <iostream> using namespace std; void setar_valores (int, int); int area () {return (x*y); ; void Retangulo :: setar_valores (int a, int b) { x = a; y = b; int main () { Retangulo Ret; Ret.setar_valores(3, 4); cout << Area = " << Ret.area(); cout << x = " << Ret.x << y = " << Ret.y; return 0; Imprimindo o valores de x e y Que aconteceu? Por que? x e y são variáveis no escopo de Retang, mas são privadas 11

#include <iostream> using namespace std; 12 void setar_valores (int, int); int area () {return (x*y); void mostrar () { cout << x = " << x << y = " << y; ; void Retangulo :: setar_valores (int a, int b) { x = a; y = b; int main () { Retangulo Ret; Ret.setar_valores(3, 4); cout << Area = " << Ret.area(); Ret.mostrar (); return 0; Imprimindo o valores de x e y Que aconteceu?

#include <iostream> using namespace std; void setar_valores (int, int); int area () {return (x*y); void mostrar () { cout << x = " << x << y = " << y; ; O que é possível fazer para x e y serem acessados pelo main? Tornar x e y públicos 13 void Retangulo :: setar_valores (int a, int b) { x = a; y = b; int main () { Retangulo Ret; Ret.setar_valores(3, 4); cout << Area = " << Ret.area(); Ret.mostrar (); return 0;

#include <iostream> using namespace std; void setar_valores (int, int); int area () {return (x*y); void mostrar () { cout << x = " << x << y = " << y; ; O que é possível fazer para x e y serem acessados pelo main? Tornar x e y públicos 14 void Retangulo :: setar_valores (int a, int b) { x = a; y = b; int main () { Retangulo Ret; Ret.setar_valores(3, 4); cout << Area = " << Ret.area(); cout << x = " << Ret.x << y = " << Ret.y; return 0;

Usando Objetos Desvantagens de tornar dados públicos: Os dados ficam desprotegidos Em geral, ter acesso aos dados, podem causar problemas de: Acesso não permitido 15 Encapsulamento Com os dados-membros desprotegidos, o objeto perde sua capacidade de encapsulamento Consistência Conversão incorreta de tipos de dados A melhor forma de acessar dados-membros é através de funções de: Set: setar os valores dos dados-membros Get: pegar os valores dos dados-membros

#include <iostream> using namespace std; 16 void setar_valores (int, int); int getx () {return x; int gety () {return y; int area () {return (x*y); ; void Retangulo :: setar_valores (int a, int b) { x = a; y = b; int main () { Retangulo Ret; Ret.setar_valores(3, 4); cout << Area = " << Ret.area(); cout << x = " << Ret.getX() << y = " << Ret.getY(); return 0;

Exercício Considerando o programa anterior, crie 2 objetos da classe Retangulo, receba seus valores de x e y pelo teclado e mostre as área na tela. 17

Ponteiros para objetos Suponha a classe Retangulo, o comando a seguir cria um ponteiro a um objeto desta classe: Retangulo *Ret2; 18 Usa-se o operador seta para acessar o objeto Ret2->setar_valores(3, 4); cout << Area = " << Ret2->area();

#include <iostream> using namespace std; 19 void setar_valores (int a, int b) { x = a; y = b; int area () {return (x*y); ; int main () { Retangulo Ret;// cria um objeto Retangulo *Ret2;// cria um ponteiro para objeto Ret2 = &Ret;// Faz com que o ponteiro Ret2 aponte para Ret Ret2->setar_valores(3, 4); cout << "Area = " << Ret2->area(); return 0;

Exercício Crie uma classe Circulo e elabore funções desta classe para calcular sua área e seu perímetro. Após crie um objeto dessa classe e solicite ao usuário o valor do raio e mostre a área e perímetro. Acesse as funções através de ponteiros. 20

Funções Construtoras As funções construtoras são chamadas na criação de um objeto e serve para: Inicializar variáveis-membros, Alocar memória dinamicamente, e Evitar o uso de valores inesperados. As funções construtoras, um tipo de função especial de uma classe, são automaticamente chamadas quando um novo objeto é criado. Uma função construtora: Tem o mesmo nome da classe E não deve ter nenhum tipo de retorno (nem mesmo void) 21

#include <iostream> using namespace std; Retangulo (int a, int b); int area () {return (x*y); ; // Função construtora da classe Retangulo Retangulo::Retangulo (int a, int b) { x = a; y = b; Protótipo da função construtora 22 int main () { Retangulo Ret(3,4);// cria um objeto Retangulo Ret2(10,2);// cria um objeto cout << "Area = " << Ret.area() << endl; cout << "Area = " << Ret2.area() << endl; return 0;

Funções Destrutoras Fazem o oposto da funções construtoras São automaticamente chamadas quando um objeto é destruido: O escopo do objeto é finalizado Exemplo: um objeto é definido localmente dentro de uma função e a função termina O objeto é alocado dinamicamente na memória e é usado um operador de deleção do objeto O destrutor tem o mesmo nome da classe, mas: é precedido de ~ Não retorna nenhum tipo 23

int main () { Retangulo Ret(3,4), Ret2(10,2);// cria os objetos Ret e Ret2 cout << "Area = " << Ret.area() << endl; cout << "Area = " << Ret2.area() << endl; return 0; #include <iostream> using namespace std; int *x, *y; Retangulo (int a, int b); ~Retangulo (); int area () {return (*x) * (*y); ; Protótipo da função destrutora 24 // Função construtora da classe Retangulo Retangulo::Retangulo (int a, int b) { x = new int; // new é um operador para alocar dinamicamente memória para o tipo //especificado, new retorna um PONTEIRO y = new int; *x = a; *y = b; // Função destrutora da classe Retangulo Retangulo::~Retangulo () { delete x;// delete é um operador que deleta a memória alocada para x delete y;

Sobrecarga de construtores Em C++, as funções podem ser sobrecarregadas Sobrecarga significa: Uma mesma função pode realiza operações específicas dependendo do tipo e da quantidade de parâmetros: Exemplo: int soma(int a, int b); float soma(float a, float b); As funções construtoras também podem ser sobrecarregadas 25

#include <iostream> using namespace std; int main () { Retangulo Ret, Ret2(10,2); cout << "Area = " << Ret.area() << endl; cout << "Area = " << Ret2.area() << endl; return 0; Retangulo (); Retangulo (int a, int b); int area () {return x * y; ; 26 Retangulo::Retangulo (int a, int b) { x = a; y = b; Retangulo::Retangulo () { x = 5; y = 5;

Exercício Faça um programa que solicite ao usuário se ele que criar objetos Retângulos ou Circulos, crie arrays de objetos dinamicamente (de acordo com a quantidade de objetos que o usuário desejar) e mostre os resultados das áreas na tela.

Arrays de objetos criados dinamicamente #include <iostream> using namespace std; 28 Retangulo (){x = 5;y = 5; // Função Construtora int area () {return x * y; ; int main () { int i; cout << "Quantos objetos retangulo deseja criar?" << endl; cin >> i; Retangulo *Ret= new Retangulo[i]; for (int j = 0; j < i; j++) cout << "Area" << "[" << j << "] = " << Ret[j].area() << endl; delete[] Ret; return 0;

Arrays de objetos Exemplo 29 Retangulo () {x = 5;y = 5;; // Função Construtora não explícita Retangulo (int a, int b) {x = a; y = b; // Função Construtora explícita Só podem ser criados sem fornecer um construtor explícito Retangulo *Ret= new Retangulo[20]; Não existe maneira de especificar argumentos explícitos para um construtor em uma declaração de array Retangulo *Ret= new Retangulo(1,4)[20];

Arrays de objetos (e se for necessário inicializar cada objeto?) 30 #include <iostream> using namespace std; Retangulo (){cin >> x; cin >> y; // Função Construtora int area () {return x * y; ; int main () { int i; cout << "Quantos objetos retangulo deseja criar?" << endl; cin >> i; Retangulo *Ret= new Retangulo[i]; for (int j = 0; j < i; j++) cout << "Area" << "[" << j << "] = " << Ret[j].area() << endl; delete[] Ret; return 0;

Arrays de objetos (inicialização individual) #include <iostream> using namespace std; 31 Retangulo (){x =0 ; y = 0; // Função Construtora void set(int a, int b){x =a; y = b; int area () {return x * y; ; int main () { int i; cout << "Quantos objetos retangulo deseja criar?" << endl; cin >> i; Retangulo *Ret= new Retangulo[i]; for (int j = 0; j < i; j++){ int a, b; cout << "x" << "[" << j << "] = " << endl; cin >> a; cout << "y" << "[" << j << "] = " << endl; cin >> b; Ret[j].set(a,b); for (int j = 0; j < i; j++) cout << "Area" << "[" << j << "] = " << Ret[j].area() << endl; delete[] Ret; return 0;

Arrays de objetos (acesso via ponteiro) #include <iostream> using namespace std; 32 Retangulo (){cin >> x; cin >> y; // Função Construtora int area () {return x * y; ; int main () { int i; cout << "Quantos objetos retangulo deseja criar?" << endl; cin >> i; Retangulo *Ret= new Retangulo[i]; for (int j = 0; j < i; j++) cout << "Area" << "[" << j << "] = " << (Ret + j)->area() << endl; delete[] Ret; return 0;

Sumário *x apontado por x &x endereço de x x.y membro y do objeto x x->y membro y do objeto apontado por x (*x).y membro y do objeto apontado por x (equivalente ao anterior) x[0] primeiro objeto apontado por x x[1] segundo objeto apontado por x x[n] (n+1)ésimo objeto apontado por x 33

Membros estáticos Um classe pode ter membros estáticos Um membro estático contem o mesmo valor para todos os objetos da classe Sintaxe: static int n; static float A; 34

Exemplo: contagem do número de objetos criados e destruídos #include <iostream> using namespace std; static int n; // n é uma variável estática Retangulo (){n++; // Função Construtora ~Retangulo (){n--; // Função Destrutora int area () {return x * y; ; 35 int Retangulo::n=0; // Inicialização da variável estática n (DEVE SER DECLARADA COMO GLOBAL) int main () { Retangulo *Ret= new Retangulo[5]; cout << "n = " << Retangulo::n << endl ; Retangulo *A= new Retangulo; cout << "n = " << Retangulo::n << endl ; delete[] Ret; delete A; Retangulo *B= new Retangulo[3]; cout << "n = " << Retangulo::n << endl ; delete[] B; Retangulo C, D; cout << "n = " << Retangulo::n << endl ; return 0;

Exercícios Faça um programa baseado na declaração de um classe aluno, que tenha como variáveis membros: nome, idade, matrícula, endereço, CEP e CRE, e que, sendo estas variáveis privadas, só aceitem dados com verificação de conteúdo (exemplo, CRE deve estar entre 0 e 10; idade sempre positiva, etc.). Após isso, faça o cadastro de alguns alunos da turma e mostre na tela o cadastro. 36

Sobrecarga de operador Suponha a seguinte classe: 37 Retangulo (){x =0 ; y = 0; // Função Construtora void set(int a, int b){x =a; y = b; int area () {return x * y; ; E considere os seguintes objetos: Retangulo A, B, C; O que aconteceria se a seguinte operação for realizada: C = A + B; Erro de compilação!!!

#include <iostream> using namespace std; Retangulo (){x =0 ; y = 0; // Função Construtora ; Retangulo operator + (Retangulo); // Função sobrecarregada do operador binário "+" void set(int a, int b){x =a; y = b; void mostra(){cout << "(x= " << x << ", y= " << y << ")" << endl;; int area () {return x * y; Retangulo Retangulo::operator + (Retangulo Temp){ Retangulo Temp2; Temp2.x = x + Temp.x; Temp2.y = y + Temp.y; return Temp2; int main () { Retangulo A, B, C; A.set(1,2); B.set(3,4); C = A + B; C.mostra(); Sobrecarga de operador Binário 38 return 0;

#include <iostream> using namespace std; Retangulo (){x =0 ; y = 0; // Função Construtora Retangulo operator + (Retangulo); // Função sobrecarregada do operador binário "+" void operator ++ () // Função sobrecarregada do operador unário "++" { x++; y++; void set(int a, int b){x =a; y = b; void mostra(){cout << "(x= " << x << ", y= " << y << ")" << endl;; int area () {return x * y; ; Retangulo Retangulo::operator + (Retangulo Temp){ Retangulo Temp2; Temp2.x = x + Temp.x; Temp2.y = y + Temp.y; return Temp2; int main () { Retangulo A, B, C; A.set(1,2); B.set(3,4); C = A + B; C.mostra(); A++; // Operador unário sobrecarregado A.mostra(); return 0; Sobrecarga de operador Unário 39

Sobrecarga de operador Observações gerais: Em geral, é adequado respeitar a definição original do operador Exemplo: sobrecarregar o operador + deve ser algo relacionado com adição Não é possível mudar o operador de unário para binário. Não se pode inventar novos operadores. Não é possível modificar a precedência de operadores por meio de sobrecarga. Operadores que não podem ser sobrecarregados:. (operador ponto) :: (operador de resolução de escopo)? : (operador ternário) 40

Operador ternário? O operador? avalia uma expressão condicional e retorna um valor se a expressão for true e um outro valor de for false Sintaxe (condição)? valor1 : valor2 Exemplo com if if (x == 20) // Se x for igual a 20 else y = 50; // então faço y receber 50 y = 70; // senão faço y receber 70 Exemplo com? int y = (x == 20)? 50 : 70; // y recebe 50 se x for igual a 20, senão recebe 70. 41

Exercício Faça a sobrecarga dos operadores abaixo: - (subtração) -- (decremento) 42

A palavra-chave this Representa um ponteiro para o objeto corrente cuja função está sendo executada. This também é conhecido como operador de AUTOREFERÊNCIA 43

#include <iostream> using namespace std; 44 Retangulo (){x =0 ; y = 0; // Função Construtora Retangulo operator + (Retangulo); // Função sobrecarregada do operador binário "+" void operator ++ () // Função sobrecarregada do operador unário "++" { x++; y++; void set(int a, int b){x =a; y = b; void mostra(){cout << "(x= " << x << ", y= " << y << ")" << endl;; int area () {return x * y; ; Retangulo Retangulo::operator + (Retangulo Temp){ this->x = x + Temp.x; this->y = y + Temp.y; return *this; int main () { Retangulo A, B, C; A.set(1,2); B.set(3,4); C = A + B; C.mostra(); A++; // Operador unário sobrecarregado A.mostra(); return 0;

Estruturas (struct) Por definição uma struct é uma classe na qual os membros são públicos por default Lembre-se que em uma classe os membros são privados por default 45 struct Retangulo {......

struct 46 x e y são privados int area () {return x * y; ; Existe diferença? struct Retangulo { x e y são públicos int area () {return x * y; ;

struct 47 x e y são privados int area () {return x * y; ; Existe diferença? struct Retangulo { private: x e y são privados int area () {return x * y; ;

Exercício Crie uma estrutura de dados para o objeto quadrado e que tenha uma função membro que compute sua área. Obs: use struct em vez de class 48