Classes e Objetos. Prof. Leonardo Barreto Campos 1

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

Linguagens de Programação

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++

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

Linguagens de Programação

Programação Orientada a Objetos para Redes de Computadores

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

Programação Orientada a Objetos para Redes de Computadores. Polimorfismo com Hierarquias de Herança. Exemplo: Hierarquia Animal

Técnicas de Programação:

C com introdução a OO

Linguagens de Programação

Classes e Objetos. Sintaxe de classe em Java

Classes e Encapsulamento

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

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

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

Programação Orientada a Objetos para Redes de Computadores

Conceitos Básicos da Programação OO

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

Linguagem de Programação III

Programação I 2º Bimestre (material 1)

Classes o Objetos. Classes, objetos, métodos e variáveis de instância

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

Introdução a classes e objetos. Copyright 2006 by Pearson Education

Exercícios. Classes: Um exame mais profundo. C Como programar: Capítulo 17 C++ Como programar: Capítulo 9. Wednesday, April 22, 15

Prof. Rogério Albuquerque de Almeida. Programação Orientada a Objetos II Java Quinta aula

Linguagem de Programação Introdução a Orientação a Objetos

Capítulo 5. Nomes, Vinculações e Escopos

Introdução ao Java. Prof. Herbert Rausch Fernandes

Friends e Sobrecarga

Java - Sobrecarga/Composição

INF1636 PROGRAMAÇÃO ORIENTADA A OBJETOS

Esta categoria mais geral, à qual cada objeto pertence, denominamos de classe; IFSC/POO + JAVA - prof. Herval Daminelli

Programação I Curso: Sistemas de Informação. Prof.: José Ronaldo Leles Júnior .:

INF1337 LINGUAGEM DE PROGRAMAÇÃO ORIENTADA A OBJETOS

Modificadores de Acesso JAVA

Introdução à Programação Orientada a Objetos em C++

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

Programação Orientada a Objetos para Redes de Computadores

Programação Orientada a Objetos para Redes de Computadores. Fundamentos de Sobrecarga de Operadores. Sobrecarga de Operadores

Programação Orientada a Objetos para Redes de Computadores. Arrays. Arrays

Modificadores de Acesso e Atributos de Classe

PLANO DE UNIDADE DIDÁTICA- PUD

Linguagem de Programação Orientada a Objeto Abstração - Encapsulamento

Modelo de plano analitico

Programação Orientada a Objetos para Redes de Computadores

Java Como Programar, 8/E

Linguagem de Programação II Implementação

Programação Orientada a Objetos. Aula 1.9 this e static. Prof. Bruno Moreno

Implementando classes em C# Curso Técnico Integrado em Informática Fundamentos de Programação

Linguagem de Programação C++

Linguagem de Programação III

E N C A P S U L A M E N T O P R O F. M E. H É L I O E S P E R I D I Ã O

Estrutura de dados 1. Ponteiros

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

mos também representar entidades imaginárias, tais como um evento de pressionar o mouse no ambiente Windows.

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

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

Fundamentos de Programação

Linguagens de Programação

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

Fundamentos de Programação 2

Programação Orientada a Objetos em Java

Programação Orientada a Objetos II

Programação Orientada a Objetos (DPADF 0063)

Fundamentos de Programação

Linguagem de Programação C++

Namespaces, Classes e Métodos.

Programação I Ponteiros e alocação dinâmica de memória. Prof. Carlos Alberto

Programação Orientada aos Objectos I

Parte IV. Linguagens de Programação. Relembrando da Última Aula... Exemplos de Polimorfismo. Exemplo: Hierarquia Animal

Linguagem de Programação C++

Programação Orientada a Objetos

Aula 6 POO 1 Construtores. Profa. Elaine Faria UFU

PROGRAMAÇÃO ORIENTADA A OBJETOS: OCULTAR INFORMAÇÕES E ENCAPSULAMENTO

Programação Orientada a Objetos em Java

Dados armazenados em um objeto podem ser tanto primitivos, tais como inteiros ou caracteres, ou referências para outros objetos.

Classes, Métodos e Propriedades

1. Selecione a Estrutura de Dados que melhor representa os diretórios ou pastas de arquivos do computador.

Tipos Abstratos de Dados. Estrutura de Dados

Programação Orientada a Objetos

Tratamento de Exceções. Prof. Leonardo Barreto Campos 1

Revisão. Classe e objeto Construtores Polimorfismo Sobrecarga Pacote padrão

Passagem de parâmetros

Linguagem C: Tipos básicos de dados escalares e cadeia de caracteres. Prof. Leonardo Barreto Campos 1

Programação Orientada a Objetos. Professor: André Luis Meneses Silva br.geocities.com/programacao2ufs

Programação com Objectos. Processamento de Dados I. 2. Classes, Atributos e Métodos

Programação I Funções. Prof. Carlos Alberto

Construtores. Introdução

Linguagens de Programação

Visibilidade e Encapsulamento

Vetores. IFSC/Florianópolis - Programação Orientada a Objetos + POO - prof. Herval Daminelli

Programação Orientada a Objetos CLASSES E OBJETOS

Análise de Programação

Classes II. BCC Programação Orientada a Objectos(POO) Departamento de Computação - UFOP Baseado nos slides do Prof. Marco Antônio Carvalho

Plano de Ensino. Ementa

Ponteiros de Variáveis

Transcrição:

Classes e Objetos Prof. Leonardo Barreto Campos 1

Sumário Introdução; Escopo de Classe e Acesso a Membros de Classes; Exercício; Os Métodos get e set; Separação de Interface e Implementação; Construtores e Destrutores; Uso do ponteiro this; Prof. Leonardo Barreto Campos 2/50

Sumário Objetos const e funções membro const; Composição; Funções friend e classes friend; Alocação dinâmica de memória; Classes Proxy; Prof. Leonardo Barreto Campos 3/50

Introdução Gênesis: No princípio criaram as estruturas: Tipo de dados } Campos da estrutura Função que irá manipular a estrutura Prof. Leonardo Barreto Campos 4/50

Introdução Gênesis: No princípio criaram as estruturas: Continuação... Função que irá manipular a estrutura c é uma variável do tipo cliente Prof. Leonardo Barreto Campos 5/50

Introdução Novo Testamento: Vieram as Classes Definição da Classe Cliente public torna os membros abaixo dela e antes do private públicos private torna os membros abaixo dela privados, ou seja, acessados apenas por métodos da classe Prof. Leonardo Barreto Campos 6/50

Introdução Novo Testamento: Vieram as Classes Geralmente usado por métodos Geralmente usado por dados Construtor da Classe Cliente Membros de dados acessados diretamente por um método da classe Prof. Leonardo Barreto Campos 7/50

Introdução :: Operador binário de resolução de escopo Criação do objeto c da classe Cliente Chamada a métodos da classe Cliente Prof. Leonardo Barreto Campos 8/50

Introdução Saída para os programas Anteriores: Prof. Leonardo Barreto Campos 9/50

Escopo de Classe e Acesso a Membros de Classes Acesso aos membros privados: Membro Privado Prof. Leonardo Barreto Campos 10/50

Escopo de Classe e Acesso a Membros de Classes Acesso através de Ponteiros e com Referência: Cria um Ponteiro para a classe c Cria um Referência para a classe c Operador de seleção de membro ponto (. ) é combinado com o nome ou com uma referência a um objeto para acessar os membros do objetocria um Referência para a classe c Operador de seleção de membro seta (->) é combinado com um ponteiro para um objeto a fim de acessar os membros daquele objeto Prof. Leonardo Barreto Campos 11/50

Exercício Crie uma classe Retângulo. A classe tem atributos comprimento e largura, cada um com valor default igual a 1. Ela tem funções membro que calculam o perímetro e a área do retângulo. Forneça funções set e get, tanto para o comprimento como para a largura. As funções set devem verificar se o comprimento e a largura são números de ponto flutuante maiores que 0.0 e menores que 20.0 Prof. Leonardo Barreto Campos 12/50

Exercício Classe e Construtor sugerido: Prof. Leonardo Barreto Campos 13/50

Os Métodos get e set Como os campos privados de uma classe só podem ser manipulados pelos métodos dessa classe, costumamos ter métodos públicos para permitir aos clientes da classe configurar: set : atribuir valores; get : obter valores; Um método set pode e deve avaliar cuidadosamente as tentativas de modificar o valor da variável a fim de assegurar que o novo valor é apropriado para esse item de dados; Mês acima de 12; idade e medidas abaixo de 0 (zero); Prof. Leonardo Barreto Campos 14/50

Os Métodos get e set Exemplo de um método get: Exemplo de um método set: Prof. Leonardo Barreto Campos 15/50

Implementação: Separação de Interface e Implementação Arquivo cabeçalho para inclusão da classe na Implementação Prof. Leonardo Barreto Campos 16/50

Interface: Separação de Interface e Implementação Evita a inclusões múltiplas de arquivo de cabeçalho Prof. Leonardo Barreto Campos 17/50

Separação de Interface e Implementação Distribuição do Projeto no Eclipse: Definição das Interfaces Definição da Implementação Prof. Leonardo Barreto Campos 18/50

Construtores e Destrutores Construtor: Função membro da classe com o mesmo nome; Invocado automaticamente quando o oobjeto criado; Subporta Sobrecarga é Palavra-chave precedendo as variáveis da classe Prof. Leonardo Barreto Campos 19/50

Construtores e Destrutores new palavra-chave para criação do objeto account1 e account2 Parâmetro esperado pelo Construtor Prof. Leonardo Barreto Campos 20/50

Construtores e Destrutores Fim do Programa: Prof. Leonardo Barreto Campos 21/50

Construtores e Destrutores Saída do programa anterior: Prof. Leonardo Barreto Campos 22/50

Construtores e Destrutores Destrutor ou Destruidor é um método especial da classe que excluir o objeto criado (no escopo em que ele foi criado); O nome do destrutor é formado pelo caracter ~ (til) seguido pelo nome da classe; Não recebe e nem passa parâmetros; Geralmente o destrutor é chamado em ordem inversa ao construtor; Prof. Leonardo Barreto Campos 23/50

Construtores e Destrutores Destrutor: Prof. Leonardo Barreto Campos 24/50

Construtores e Destrutores Os destrutores de objetos definidos no escopo global e objetos locais static são chamados quando a main termina ou a função exit é chamada; Não é chamados destruidores para objetos globais e locais static se o programa é terminado com a função abort; Os destrutores de objetos locais são chamados quando os objetos deixam o escopo; Prof. Leonardo Barreto Campos 25/50

Construtores e Destrutores Exemplo: Definição da classe, do construtor e do destrutor Prof. Leonardo Barreto Campos 26/50

Construtores e Destrutores Exemplo: Definição do main e de uma classe que cria alguns objetos como teste; Prof. Leonardo Barreto Campos 27/50

Construtores e Destrutores Saída do programa anterior: Prof. Leonardo Barreto Campos 28/50

Construtores e Destrutores É possível permitir que objetos sejam criados com diferentes comportament os através da sobrecarga de construtores, vejamos: Prof. Leonardo Barreto Campos 29/50

Construtores e Destrutores Continuação: Prof. Leonardo Barreto Campos 30/50

Construtores e Destrutores Main: Prof. Leonardo Barreto Campos 31/50

Construtores e Destrutores Saída para o programa anterior: Prof. Leonardo Barreto Campos 32/50

Uso do ponteiro this Em Java: Cada objeto pode acessar uma referência com a palavra-chave this; Quando um método não-static é chamado por um objeto particular, o corpo do método utiliza implicitamente a palavrachave this para referenciar as variáveis de instância do objeto e outro métodos. Em C++: Todo objeto tem acesso ao seu próprio endereço através de um ponteiro this; Prof. Leonardo Barreto Campos 33/50

Objetos const e funções membro const A palavra-chave const pode ser usada para especificar que um objeto não é modificável: Dessa forma, qualquer tentativa de modificar o objeto deve ser considerada um erro de sintaxe; Prof. Leonardo Barreto Campos 34/50

Objetos const e funções membro const O compilador só permite chamadas de função membro para objetos const apenas se essa função também for const; As funções declaradas const não podem modificar o objeto; Uma função é especificada const protótipo como em sua definição; tanto em seu Prof. Leonardo Barreto Campos 35/50

Métodos static e campos static Métodos static realizam uma tarefa que não depende do conteúdo de nenhum objeto; Esses métodos são usados, normalmente, para realizar uma tarefa comum; Para declarar um método como static no Java, coloque a palavra-chave static antes do tipo de retorno; Prof. Leonardo Barreto Campos 36/50

Métodos static e campos static Para chamar um método static basta especificar o nome da classe em que o método foi declarado, seguido por um ponto (.) e pelo nome do método: Em Java, por que o método main é declarado static? Porque possibilita à JVM invocar o método main sem criar um objeto para a classe. Prof. Leonardo Barreto Campos 37/50

Composição classe pode ter objetos de outras classes como membros Prof. Leonardo Barreto Campos 38/50

Composição objetos definidos na classe Date Prof. Leonardo Barreto Campos 39/50

Composição Prof. Leonardo Barreto Campos 40/50

Composição Em C++, a composição tem a mesma semântica que no Java, a diferença é sintática, vejamos: Os dois pontos (:) no cabeçalho separa os inicializadores de membros da lista de parâmetros Prof. Leonardo Barreto Campos 41/50

Composição No exemplo anterior os argumentos bmonth, bday e byear são passados para o construtor o objeto birthdate; Os argumentos hmonth, hday e hyear são passados para o construtor do objeto hiredate. Prof. Leonardo Barreto Campos 42/50

Funções friend e classes friend Uma função friend de uma classe é definida fora do escopo daquela classe, mas ainda tem o direito de acessar membros private da classe; Uma função ou uma classe inteira podem ser declaradas como friend de outra classe; O uso de friends freqüentemente é apropriado quando uma função membro não puder ser usada para certas operações; Prof. Leonardo Barreto Campos 43/50

Funções friend e classes friend Para declarar uma função como um friend de uma classe, preceda o protótipo da função na definição da classe com a palavra-chave friend; Uma boa prática de programação é colocar todas as declarações friend no início da classe, logo depois do cabeçalho da classe; Prof. Leonardo Barreto Campos 44/50

Funções friend e classes friend Método friend acessando um membro privado Prof. Leonardo Barreto Campos 45/50

Alocação dinâmica de memória Para criar um objeto usando o C puro teríamos: Os operadores new e delete oferecem um meio mais agradável de executar a alocação dinâmica de memória do que malloc e free; Prof. Leonardo Barreto Campos 46/50

Classes Proxy Fornece aos cliente da classe acesso apenas à interface public; Permite que os clientes usem serviços da classe sem lhes dar acesso aos detalhes de implementação da classe; Vejamos a implementação de uma classe proxy; Prof. Leonardo Barreto Campos 47/50

Classes Proxy Definição da classe cujo dados private queremos esconder Classe proxy com uma interface public idêntica à da classe Implementation Prof. Leonardo Barreto Campos 48/50

Classes Proxy Prof. Leonardo Barreto Campos 49/50

Bibliografia Deitel, H. M. & Deitel, P. J. C++: como programar, Editora Bookman. 3ª ed. Porto Alegre: 2001. Deitel, H. M. & Deitel, P. J. Java: como programar, Editora Bookman. 6ª ed. São Paulo: 2005. Prof. Leonardo Barreto Campos 50/50