Programação Orientada a Objetos

Slides:



Advertisements
Apresentações semelhantes
Certificação Marco Antonio. Introdução A compreensão desse capítulo é muito importante pois trata de um assunto essencial em qualquer linguagem de programação,
Advertisements

TÉCNICO EM INFORMÁTICA Linguagem e Técnica de Programação III PROF. MARCELO N. SANTOS
CLASSES EM JAVA Dilvan Moreira (baseado no livro Big Java)
TÉCNICO EM INFORMÁTICA Linguagem e Técnica de Programação III PROF. MARCELO N. SANTOS
PROGRAMAÇÃO ORIENTADA A OBJETOS EM C++ Professor: Dilvan Moreira.
TÉCNICO EM INFORMÁTICA Linguagem e Técnica de Programação III PROF. MARCELO N. SANTOS
Linguagens de Programação Conceitos e Técnicas Amarrações Prof. Isabel Cafezeiro
Atributos e Métodos Restrições de Acesso Encapsulamento Herança.
Modelagem Orientada a Objetos com UML Cursos para a CTI - IME/USP Dairton Bassi, Hugo Corbucci e Mariana Bravo Departamento de Ciência.
Programação em Java Threads Prof. Luiz Antonio Rodrigues Prof. Luiz Antonio Unioeste - Cascavel Jpanel e Diagramadores.
Linguagens de Programação Conceitos e Técnicas Expressões Prof. Isabel Cafezeiro
1 Programação em C Aula 7. 2 Um lojista atribui o preço de venda dos itens de sua loja com um número racional (uma fração de inteiros). Este comerciante.
Disciplina: Estrutura de Dados Professor: Jeovane Reges Caxias – MA 2015 ACULDADE DE CIÊNCIAS E TECNOLOGIA DO MARANHÃO.
Classes Objetos Atributos Métodos Coletor de Lixo (Garbage Collector ) Confraria do Java Nivelamento. Caroline, Marcelo e Luiz 12/05/2007.
Generalização, Especialização e Conceitos Carlos Bazilio Depto de Ciência e Tecnologia Pólo Universitário de Rio das Ostras Universidade Federal Fluminense.
Classe Abstrata É uma classe que não pode ser instanciada; Freqüentemente aparece no topo de uma hierarquia de classes de programação orientada a objetos;
Algoritmos e Programação utilizando Visualg
Linguagem de Programação – Aula 04 Prof. Me. Ronnison Reges Vidal
Estruturas de Dados Aula 2: Estruturas Estáticas
Polimorfismo e suas aplicações em C++.
Projeto de Compiladores
INF1007: Programação 2 2 – Alocação Dinâmica
Material de Apoio - Teoria
Introdução OO.
Linguagens de Programação Conceitos e Técnicas
INSTITUTO FEDERAL DO CEARÁ Mauro Oliveira
Introdução a Linguagem Java
Módulo I Capítulo 2: IDE e Variáveis
Introdução Java.
PROGRAMAÇÃO ORIENTADA A OBJETO - JAVA
Linguagem C Para programadores Python
3.1 Classes e Objetos Em um programa orientado a objetos normalmente existem vários objetos de um mesmo tipo. Por exemplo, um programa de controle de.
FUNDAMENTO DE PROGRAMAÇÃO
Regras Variáveis em PHP
Projeto de PLP (2006.1) Extensão da Linguagem OO1
Java: Interfaces Alcides Calsavara.
FUNDAMENTO DE PROGRAMAÇÃO
CONCEITO DE VARIÁVEIS ESTÁTICAS
Criação e manipulação de objetos
Unidade IV– Relacionamento entre Objetos
Unidade V – Herança e Ligação Dinâmica
Algoritmos e Técnicas CEFET/RN.
Programação Orientada a Objetos
Programação Orientada a Objetos

Unidade VI – Exceções e Interfaces
Técnicas de Programação
Programação Orientada a Objetos*
Programação Orientada a Objetos*
Rosemary Silveira Filgueiras Melo
Pacotes Servem para organizar o código, por exemplo, agrupar classes correlatas. Vamos supor uma classe Ponto2D pertencente ao pacote formas. A classe.
Programação Orientada a Objetos*
3.2 Sobrecarga de Métodos (Overloading)
Rosemary Silveira Filgueiras Melo
Rosemary Silveira Filgueiras Melo
Prof.: Bruno Rafael de Oliveira Rodrigues
Programação Orientada a Objetos
3.1.7 Variáveis de Classe e Instância
Laboratório I Mateus Raeder.
Rosemary Silveira Filgueiras Melo
Curso básico de PHP. 1 Vantagens: Gratuito Multiplataforma Estável Rapidez Comunicação.
Computação Eletrônica Vetores e Matrizes
Estruturas de Dados em C
Diêgo Santiago, Leila Soriano e Patrícia Lustosa
Estruturas definidas pelo programador
Tipos Primitivos de Dados
Compilação de Linguagens OO
Programação Orientada a Objetos
RESULUÇÃO DOS EXERCÍCIOS E
Programação de Computadores II
Transcrição da apresentação:

Programação Orientada a Objetos Dynamic Binding Modificador final

3.6.1 Dynamic Binding Na classe TestePonto, quando chamamos o método print do objeto referenciado pela variável p3, em tempo de compilação é verificado se esse método está definido na classe Ponto3D que é o tipo deste objeto. Porém, em tempo de execução, a referência do objeto poderia estar se referindo a alguma subclasse do tipo de referência declarado. Nesse caso, a decisão de qual método será executado é feita em tempo de execução (dynamic binding). Essa propriedade do objeto decidir qual método aplicará para si na hierarquia de classes é chamada de polimorfismo. Alan Santos

3.6.1 Dynamic Binding Implemente o código abaixo, execute-o e observe o seu resultado: class Polimorfismo { public static void main (String args []){ Ponto2D p1 = new Ponto2D (1,1); Ponto2D p2 = new Ponto3D (2,2,2); p1.print (); p2.print (); } Alan Santos

3.6.1 Dynamic Binding No método main declaramos a variável p2 como sendo do tipo Ponto e depois armazenamos nela uma referência a uma instância da classe Ponto3D. Quando chamamos o método print( ) (p2.print ( ) ), o interpretador Java verifica que, na verdade, p2 é uma instância de Ponto3D e, portanto, chama o método print da classe Ponto3D e não da classe Ponto. Alan Santos

3.6.1 Dynamic Binding No método main de Polimorfismo declare uma variável p3 como sendo do tipo Ponto3D e depois armazene nela uma referência a uma instância da classe Ponto. Observe que como Ponto é a superclasse, ele pode referenciar objetos de subclasses, mas o contrário (uma variável do tipo Ponto3D referenciar um objeto do tipo Ponto) gera erro em tempo de compilação. Alan Santos

3.6.1 Dynamic Binding Por exemplo, podemos fazer: Ponto p1 = new Ponto( ); Ponto p2 = new Ponto3D( ); Mas não podemos fazer: Ponto3D p3 = new Ponto( ); Alan Santos

3.6.1 Dynamic Binding Agora, em Polimorfismo, execute o código abaixo: Ponto p2 = new Ponto3D ( ); Ponto3D p4 = (Ponto3D) p2; Alan Santos

3.6.1 Dynamic Binding Veja que temos que usar casting se queremos que uma variável do tipo Ponto3D receba a referência de um objeto Ponto3D contida em uma variável do tipo Ponto. Caso contrário, será gerado erro em tempo de compilação. Alan Santos

3.6.1 Dynamic Binding Regras para métodos sobrescritos: Um método não pode ser menos acessível que o método que ele sobrescreve. No exemplo explicado anteriormente, não é possível o método print da classe Ponto ser public e o da classe Ponto3D ser private. Mas, o contrário é válido. Alan Santos

3.6.1 Dynamic Binding 1 Elipse e = new Elipse(); 2 Circulo c = new Circulo(); 3 e = c; 4 e.calcularArea( ); A atribuição da linha 3 é dinamicamente acoplada, pois acopla o objeto ‘e’ a um tipo diferente de seu tipo originalmente declarado. Em princípio, seria uma violação atribuir um objetos de um tipo diferentes tipo a variável ‘e’, no entanto, como ‘c’ (Circulo) é subclasse de ‘e’ (Elipse) essa atribuição é válida. Qual o método executado ? Círculo ou Elipse ? Alan Santos

3.6.1 Dynamic Binding A operação executada é a de Circulo, porque o compilador em tempo de execução verifica que a variável aponta para um objeto desta classe Em algumas linguagens o programador deve pedir explicitamente o acoplamento dinâmico para uma mensagem em particular. Importante: Todas as operações sobrecarregadas na classe derivada devem proporcionar semanticamente os mesmos serviços oferecidos pela superclasse. Alan Santos

3.7 O Modificador “final” Todos os métodos podem ser sobrepostos. Se você quiser declarar que não deseja mais permitir que as subclasses sobreponham métodos de uma classe, deve declará-las como final. Alan Santos

3.7 O Modificador “final” Altere o método print da classe Ponto, declarando-o como final: public final void print ( ) { Observe que é gerado um erro em tempo de compilação, pois ele é redefinido na classe Ponto3D. Alan Santos

3.7 O Modificador “final” Enquanto os métodos final não podem ser sobrepostos, as variáveis declaradas como final não podem ter os seus valores alterados no código do programa. Isso gera erro em tempo de compilação. Alan Santos

3.7 O Modificador “final” Variáveis com o modificador final Não podem ser modificadas depois de inicializadas Podem ser de instância ou de classe Classes com o modificador final Não podem ser herdadas Pode ser usado junto com static um membro final static é uma constante Nunca muda de valor Alan Santos