Programação Orientada a Objetos

Slides:



Advertisements
Apresentações semelhantes
De 17 1 Linguagens de Programação Orientadas a Objetos Pós-Gradução(Lato-Sensu) em Sistemas de Banco de Dados - UFPa Marco Fagundes Aula.
Advertisements

Programação Orientada a Objetos com Java
Classes Abstratas e Interface. 2 Classe Abstrata  Uma classe abstrata serve apenas como modelo para uma classe concreta (classe que comumente usamos);
1 Interface (o termo) » Interface (a palavra reservada): Java estendeu o conceito de interfaces à um nível ainda mais flexível que permite construir entidades.
Tratamento de exceções em Java Prof. Gustavo Wagner (Alterações) Prof. Tiago Massoni (Slides Originais) Desenvolvimento de Sistemas FATEC-PB  Centro de.
CLASSES EM JAVA Dilvan Moreira (baseado no livro Big Java)
PROGRAMAÇÃO ORIENTADA A OBJETOS EM C++ Professor: Dilvan Moreira.
Atributos e Métodos Restrições de Acesso Encapsulamento Herança.
LINGUAGEM DE PROGRAMAÇÃO. Breve histórico Ada Lovelace Luigi Menabrea Charles Babbage TradutorMemóriasMáquina analítica.
Linguagem de Programação – Aula 03 Prof. Me. Ronnison Reges Vidal.
Princípios de Desenvolvimento de Algoritmos MAC122 Prof. Dr. Paulo Miranda IME-USP Variáveis e Atribuições.
Acessos e Privilégios. Privilégios  O gerenciamento de usuários e seus respectivos privilégios aos objetos do banco de dados, dependendo do número de.
Classes Objetos Atributos Métodos Coletor de Lixo (Garbage Collector ) Confraria do Java Nivelamento. Caroline, Marcelo e Luiz 12/05/2007.
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;
Introdução à Computação para Engenharia MAC2166
Linguagem de Programação – Aula 04 Prof. Me. Ronnison Reges Vidal
EDIFICAÇÕES - SUBSEQUENTE
Sistemas de Controlo: Realimentação
UML – Diagramas de componentes
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.
Projeto de PLP (2006.1) Extensão da Linguagem OO1
Java: Interfaces Alcides Calsavara.
POO Herança e Polimorfismo
Prof. Wellington Franco Manipulação de Arquivos em C
GRÁFICOS DE CONTROLE.
Criação e manipulação de objetos
Programação Gráfica em Java Animação
Unidade IV– Relacionamento entre Objetos
Classes e Objetos Aula 11/08/2014.
UML – Diagramas de Componentes e Modelação da Arquitectura Física
FUNDAMENTO DE PROGRAMAÇÃO
Programação Orientada a Objetos
INE 5201 – INTRODUÇÃO À CIÊNCIA DA COMPUTAÇÃO
BANCO DE DADOS II.
Desenvolvimento Androd Prof. Rone Ilídio
Tipos de Arquivos Arquivos podem armazenar caracteres (arquivo texto) ou bytes (arquivos binários); Na prática, arquivos textos são abertos por editores.
DESENVOLVIMENTO DE SOFTWARE AULA 6 – Programação Orientada a Objetos
Lucas Van Langendonck – 1BCC
Elaborando as Interfaces Aulas 37, 38 e 39.
Remote Method Invocation
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)
Programação Orientada a Objetos*
Rosemary Silveira Filgueiras Melo
Rosemary Silveira Filgueiras Melo
Programação Orientada a Objetos
3.1.7 Variáveis de Classe e Instância
Programação Orientada a Objetos
Laboratório I Mateus Raeder.
Laboratório I Mateus Raeder.
Programação Orientada a Objetos*
Laboratório I Mateus Raeder.
Rosemary Silveira Filgueiras Melo
Visual Basic TCP.
Programação Funcional
ALGORITMOS.
Tipos Primitivos de Dados
A classe String.
Ordenando Coleções A Classe Collections.
Programação Orientada a Objetos
Prof. Ricardo Luís Lachi
Constantes, Variáveis e Memória
RESULUÇÃO DOS EXERCÍCIOS E
Percorrendo coleções com Iterator
Programação de Computadores II
Transcrição da apresentação:

Programação Orientada a Objetos Herança e Sobreposição

Herança e Sobreposição super Sobreposição Restrições à sobreposição

Herança É quando novas classes herdam propriedades (dados e métodos) de outras classes existentes. Esse é um importante recurso da orientação a objetos que permite a reutilização de código. As classes que herdam as propriedades são chamadas subclasses e a classe pai é chamada superclasse. Em Java é usada a palavra extends para implementar a herança. Alan Santos

Herança A utilização da herança facilita a reutilização de código porque o código definido na superclasse pode ser utilizado automaticamente na subclasse Através da herança é possível representar a relação de generalização/especialização entre duas classes: a superclasse é uma generalização da(s) subclasse(s), e a subclasse é uma especialização da(s) superclasse(s). Alan Santos

Herança A classe Ponto2D abaixo representa um ponto geométrico no plano cartesiano com duas coordenadas x e y. class Ponto2D { int x, y; public Ponto2D(int x, int y) { this.x = x; this.y = y; } public Ponto2D ( ) { // this também pode ser usado para chamar construtores this (-1, -1); public void print ( ) { System.out.print (x +", "+ y); Alan Santos

Herança Suponha que queremos construir uma classe Ponto3D que represente um ponto tri- dimensional (com 3 coordenadas) de forma que as variáveis x e y não precisem ser declaradas em Ponto3D. Para isso, construa uma hierarquia de classes onde Ponto é a superclasse e Ponto3D é a subclasse, com os atributos x e y sendo herdados de Ponto. Alan Santos

Herança A herança deve ser utilizada visando a reutilização de comportamento. Ou seja, as classes derivadas devem se comportar como as superclasses. Para isso sempre deve existir uma hierarquia de Generalização /Especialização entre as classes. Alan Santos

Herança Um objeto do tipo círculo pode ser usado no lugar de um objeto do tipo elipse porque todo círculo é um tipo especial de elipse. Não há limites no número de níveis na hierarquia de herança. Métodos construtores não são herdados! Mas um construtor de uma classe base é chamado implicitamente antes da primeira linha do construtor da classe derivada. Alan Santos

super A declaração super pode ser usada como uma versão do this, ao que se refere à superclasse. O super faz a chamada do método construtor da superclasse. Também pode ser usada para chamar métodos da superclasse. Alan Santos

super Implemente uma versão melhorada da classe Ponto3D, onde o código abaixo, que está presente em ambas as classes, é substituído pela declaração super, que faz a chamada do método construtor da superclasse Ponto2D. this.x = x; this.y = y; Alan Santos

super Adicione em Ponto3D o método printPonto3D. A implementação desse método deverá usar a declaração super.print ( ) para chamar o método print() da superclasse da instância this e possuir uma linha e código para imprimir a coordenada z; Alan Santos

Sobreposição (Overriding) No exemplo anterior, foi necessário reescrever o método print na classe Ponto3D para que ele agora imprimisse a coordenada do ponto em 3 eixos (x, y, z). Podemos utilizar a propriedade de sobreposição. Reescreva o método print na classe Ponto3D com o mesmo nome ao invés de outro como utilizado (print Ponto3D). Mas, observe que o método deve ter a mesma assinatura (nome, argumentos e valor de retorno), senão não se trata de redefinição e sim de sobrecarga (overloading) do método. Alan Santos

Sobreposição (Overriding) Crie uma classe TestePonto com o seguinte método main public static void main (String args []) { Ponto3D p3 = new Ponto3D( ); p3.print( ); } Ao executar esse código, você pode observar que foi chamado o método print da classe Ponto3D . Porém, se chamássemos um método da classe Ponto que não fosse sobrescrito na classe Ponto3D (por exemplo, se não existisse o método print na classe Ponto3D), automaticamente, seria chamado o método da superclasse (Ponto2D). Alan Santos

Restrições à sobreposição Alguns métodos não podem ser sobrepostos em função dos modificadores que recebem: final: um método final nunca muda, todas as classes derivadas utilizam a mesma implementação. As chamadas aos métodos finais são resolvidas em tempo de compilação (vinculação estática). static: é implicitamente um método final. private: são implicitamente finais, porque não podem ser sobrescritos nas classes derivadas embora seja possível escrever um método com mesma assinatura numa classe derivada. Alan Santos