Orientação a Objetos e a Linguagem Java



Documentos relacionados
Herança. Algoritmos e Programação II. Aula 5 Herança

Encapsulamento de Dados

Reuso com Herança a e Composiçã

1. Herança. Sobrescrevem métodos - redefinem métodos herdados. Subclasse herda de uma superclasse

Programação Orientada a Objetos em Java. Herança

Implementando uma Classe e Criando Objetos a partir dela

Técnicas de Programação II

Programação Orientada a Objetos em Java

Programação por Objectos. Java

Análise e Projeto Orientados por Objetos

Programação Orientada a Objetos (DPADF 0063)

Algoritmos e Programação II. Sobrecarga

Prova de Java. 1) Copie o programa abaixo no eclipse e complete-o, utilizando os conceitos aprendidos durante o curso. (4 pontos)

Herança. Alberto Costa Neto DComp - UFS

Prof. Jhonatan Fernando

Linguagem de Programação JAVA. Técnico em Informática Professora Michelle Nery

Análise de Programação

Programação Orientada a Objetos

Capítulo 5 Reuso de Classes

Java 2 Standard Edition Como criar classes e objetos

Exemplo 1. Um programa que cria uma instância de uma classe que herda da classe Frame

Programação Orientada a Objetos C++

Lista de Contas: Assinatura. Lista de Contas. Listas de Contas: Descrição. Listas de Contas: Descrição. Listas de Contas: Descrição

Orientação a Objetos com Java

Módulo 07 Características Avançadas de Classes

Curso Java Starter. 1

Construção de novas Classes em Java. Classes Atributos Métodos Herança...

POO Programação Orientada a Objetos. Classes em Java

Para desenvolver a atividade a atividade desta aula utilizaremos o ambiente de desenvolvimento integrado NetBeans.

Programação com Objectos. Processamento de Dados I. 4. Classes Abstractas

Programação Orientada a Objetos em java. Polimorfismo

Programação Orientada a Objetos. Encapsulamento

Programação Orientada a Objetos e Java - Introdução. Carlos Lopes

Computação II Orientação a Objetos

DEFINIÇÃO DE MÉTODOS

PROGRAMAÇÃO ORIENTADA A OBJETO EM PHP

Programação Orientada a Objetos (DPADF 0063)

Programação por Objectos. Java

Java Básico. Classes Abstratas, Exceções e Interfaces Prof. Fernando Vanini Ic-Unicamp

Material de Apoio 5. int getres() { return res; O que estas classes possuem em comum? 1) 2) 3)

insfcanceof new public switch transient while byte continue extends for int null

EXERCÍCIOS SOBRE ORIENTAÇÃO A OBJETOS

BC0505 Processamento da Informação

Linguagem de Programação III Herança

Computação II - Java Prof. Adriano Joaquim de Oliveira Cruz Aula Prática - Herança, Polimorfismo e Construtores

Introdução a Java. Hélder Nunes

Exercícios de Revisão Java Básico

Comandos de repetição For (inicialização; condição de execução; incremento/decremento) { //Código }

Programação Orientada a Objetos. Prof. Diemesleno Souza Carvalho diemesleno@iftm.edu.br

Tópicos da Aula. Classes e Objetos. Classe Pública em Java. Classes em Java. Assinatura de Métodos. Corpo de Classes e Métodos. Conceitos de classe

Programação Orientada a Objetos Herança Técnico em Informática. Prof. Marcos André Pisching, M.Sc.

HERANÇA. Prog. Orientada a Objetos em Java

ORIENTAÇÃO A OBJETOS. Professora Lucélia Oliveira

Classes, Superclasses e Subclasses

Aula 3 Objeto atual com referencia THIS e Classes com Herança

Introdução à orientação a objetos. João Tito Almeida Vianna 25/05/2013

Um objeto é uma instância de uma 'classe'. Você define uma classe utilizando o trecho de código abaixo;

Programação Orientada a Objetos Prof. Rone Ilídio UFSJ/CAP

Lista 05 Herança. public class PessoaFisica extends Pessoa { private String RG; public PessoaFisica(){ super(); } public String getrg(){ return RG; }

7 RTTI e Interfaces. Desenvolvimento OO com Java. Vítor E. Silva Souza (vitorsouza@inf.ufes.br)

Linguagem de Programação I. Orientação a Objetos em Java

Membros de classe e de instância. PARTE III: Java e OO - detalhes. Exemplo 1: método. Exercício. Exemplo 1 corrigido

Curso Adonai QUESTÕES Disciplina Linguagem JAVA

8 Classes Internas. Desenvolvimento OO com Java. Vítor E. Silva Souza

ATRIBUTOS PRIVADOS 6. ENCAPSULAMENTO MÉTODOS PRIVADOS MÉTODOS PRIVADOS

Programação por Objectos. Java

Programação Orientada a Objetos: Lista de exercícios #1. Bruno Góis Mateus

Módulo 02 Programação Orientada a Objetos. Última atualização: 07/06/2010

Desenvolvimento OO com Java Orientação a objetos básica

Influenciam nossa percepção; ajudam-nos a organizar e a coordenar a Classes estimulam projeto centrado em dados:

BCC221 Programação Orientada a Objetos. Prof. Marco Antonio M. Carvalho 2014/2

A Introdução à Programação Orientada a Objetos. Programação e Sistemas de Informação

Projeto de sistemas em Java. Algoritmos e Programação I. Classe SimulacaoFuncionario. Classe SimulacaoFuncionario. Classe SimulacaoFuncionario

5 - Vetores e Matrizes Linguagem C CAPÍTULO 5 VETORES E MATRIZES

Java. Marcio de Carvalho Victorino

Polimorfismo. Prof. Leonardo Barreto Campos 1

2ª Lista de Exercícios Orientação a Objetos

Programação de Computadores - I. Profª Beatriz Profº Israel

Introdução à Programação. Interface, Polimorfismo e Dynamic Binding

Capítulo 3. Programação por objectos em Java

MODELAGEM VISUAL DE OBJETOS COM UML DIAGRAMA DE CLASSES.

UML: Diagrama de Casos de Uso, Diagrama de Classes

PHP INTRODUÇÃO CLASSES E OBJETOS

FACULDADE PITÁGORAS DE UBERLÂNDIA PROGRAMAÇÃO ORIENTADA A OBJETOS EM JAVA LISTA DE EXERCÍCIOS (Compilação) Versão 2.0

Capítulo 14. Herança a e Polimorfismo. Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

Java Threads. Introdução

Computação II Orientação a Objetos

Exercício 1 : As classes abaixo serão utilizadas neste exercício: public class Ponto { int x; int y; public Ponto(int x, int y){ this.

ATRIBUTOS E MÉTODOS DE CLASSE

PROCESSOS. Prof. Maicon A. Sartin

UM ESTUDO PARA A EVOLUÇÃO DO PHP COM A LINGUAGEM ORIENTADA A OBJETOS

Relacionamentos entre objetos. Relacionamentos entre objetos. Relacionamentos entre objetos. Relacionamentos entre objetos

Conversão de Tipos e Arrays

5 Apresentando a linguagem C

Prof. Me. Marcos Echevarria

Vetores. Professor Dr Francisco Isidro Massettto

Estrutura em Camadas. Estrutura em Camadas. Alcides Pamplona Alcides Pamplona Linguagem de Programação CESBD 2010

Sintaxe Geral Tipos de Dados. Prof. Angelo Augusto Frozza, M.Sc.

Curso Java Starter. 1

Transcrição:

Orientação a Objetos e a Linguagem Java Afrânio Assis afranio@gmail.com Novembro/2006 1

Reutilizição com Herança e Composição Novembro/2006 2

Introdução Separar as partes que podem mudar das partes que provavelmente não mudam Programador cliente: deve poder usar o código sem a preocupação de ter que reescrever seu código caso surjam versões futuras Programador de biblioteca: deve ter a liberdade de fazer melhoramentos sabendo que o cliente não terá que modificar seu código Deve-se esconder do cliente Métodos que não fazem parte da interface Todos os atributos de dados Novembro/2006 3

Reutilização A reutilização de código leva a produtos melhores e mais lucrativos O código reusado já foi testado Não é necessário reinventar a roda a cada nova aplicação, esse reuso de código implica em redução de gastos Podemos reutilizar classes utilizando dois mecanismos da orientação a objetos: Composição Herança Novembro/2006 4

Composição Ocorre quando uma classe X possui um atributo cujo o tipo é definido por uma classe Y, ou seja, há uma associação entre as duas classes, sendo Y parte do todo X. Ex: A classe Carro possui como atributos um Motor e quatro Pneus, sendo o Motor e os Pneus partes do Carro. Um objeto da classe X terá uma referência para um objeto da classe Y Novembro/2006 5

Composição public class Carro { private Motor motor; private Pneu[] pneus class Motor { class Pneu { Carro Motor Pneu Novembro/2006 6

Herança É um mecanismo para derivar novas classes a partir de classes existentes Subclasses (mais específicas) herdam todos os atributos e métodos (não privados) das superclasses (mais gerais) Métodos herdados podem ser sobrescritos, além disso novos métodos e atributos podem ser criados nas subclasses super(... ) deve ser a primeira instrução do construtor. Caso não seja especificado, é usado o construtor padrão Ex: Quadrado herda de Quadrilatero Novembro/2006 7

Herança Mamífero comer() Object Animal peso locomover() Ave locomover() voar() Réptil locomover() nadar() Caso não exista a cláusula extends, então, assume-se que a superclasse é Object. Em Java, Object é a superclasse de todas as classes peso é uma propriedade que está presente em todos os objetos criados para as classes Animal, Mamífero, Ave e Réptil Ave pardal = new Ave(); pardal.peso = 700; Mamifero boi = new Mamifero() boi.peso = 8000; boi.locomover(); Novembro/2006 8

Composição x Herança Composição Queremos características de uma classe existente dentro de nossa classe, mas não queremos sua interface Relação parte de entre classes Herança Queremos reusar a interface de uma classe já existente relação é um entre classes Novembro/2006 9

Exemplo de Composição public class Ponto { private int x, y; public Ponto() { setponto(0,0); public Ponto(int a, int b) { setponto(a,b); public void setponto(int a, int b) { x = a; y = b; public int getx() { return x; public int gety() { return y; public String tostring() { return "[" + x + ", " + y + "]"; Novembro/2006 10

Exemplo de Composição import java.lang.math; public class Circulo { private Ponto p; private double raio; public Circulo() { p = new Ponto(0,0); setraio(0); public Circulo(double r, int a, int b) { p = new Ponto(a,b); setraio(r); public void setraio(double r) { raio = r; public double getraio() { return raio; Novembro/2006 11

Exemplo de Composição public double getarea() { return Math.PI * raio * raio; public void setponto(int a, int b) { p.setponto(a,b); // O usuário não tem acesso ao centro do círculo public int getx() { return p.getx(); public int gety() { return p.gety(); public String tostring() { return "Centro = " + p.tostring() + "; Raio = " + raio; Novembro/2006 12

Exemplo de Herança import java.lang.math; public class Circulo extends Ponto { private double raio; public Circulo( ) { super(0, 0); setraio(0); public Circulo( double r, int a, int b) { super (a, b); setraio( r ); public void setraio( double r ) { raio = r; Novembro/2006 13

Exemplo de Herança public double getraio( ) { return raio; public double getarea( ) { return Math.PI * raio * raio; public String tostring() { return "Centro = " + super.tostring + "; Raio = " + raio; Novembro/2006 14

Composição x Herança Composição - Benefícios Permite que um objeto seja composto de vários outros objetos Podemos fazer alterações em tempo de execução Ex: podemos trocar os Pneus de um objeto do tipo Carro durante a execução do programa Herança - Restrições Um classe herda diretamente APENAS DE UMA outra classe A herança apenas pode ser alterada durante a edição do programa Novembro/2006 15

Composição x Herança Composição e herança não são mutuamente exclusivas As técnicas podem ser usadas em conjunto para obter os melhores resultados de cada uma Novembro/2006 16

Sobrescrita e Ocultação Sobrescrita (overriding): substituir a implementação de um método da superclasse, mantendo a assinatura. Não confundir sobrescrita com sobrecarga Ocultação (shadowing): declarar variáveis membros com os mesmos identificadores usados na superclasse. Novembro/2006 17

Sobrescrita Métodos sobrescritos nunca podem ter menos acesso que os métodos originais Se o método original for public, novas versões têm que ser public Se o método original for protected, novas versões só podem ser protected ou public Se método original for private, ele não será visível fora da classe e, portanto, não poderá ser sobrescrito Até pode ser criado um método na classe filha com a mesma assinatura de um método private na classe mãe, mas isso não é sobrescrita. Métodos de classe (static) nunca são sobrescritos Novembro/2006 18

Novembro/2006 19

Upcasting e Downcasting Permissão de subtipos se passarem por supertipos: Figura f = new Circulo(); Círculo é uma Figura Sempre seguro: Círculo é um conjunto extendido de Figura A operação inversa, denominada downcasting, é perigosa: Circulo c = (Circulo) f; Nem toda Figura é um Circulo Novembro/2006 20

Inicialização e Carga de Classe Uma classe precisa ser carregada na memória quando utilizada pela primeira vez: primeiro objeto construído acesso a um membro estático necessidade da superclasse Ordem de inicialização: membros estáticos em ordem textual (uma única vez) inicialização de campos Novembro/2006 21

class Insect { int i = 9; int j; Insect() { prt("i = " + i + ", j = " + j); j = 39; static int x1 = prt("static Insect.x1 initialized"); static int prt(string s) { System.out.println(s); return 47; public class Beetle extends Insect { int k = prt("beetle.k initialized"); Beetle() { prt("k = " + k); prt("j = " + j); static int x2 = prt("static Beetle.x2 initialized"); Novembro/2006 22

public static void main(string[] args) { prt("class load"); Beetle b = new Beetle(); //Saída: //static Insect.x1 initialized //static Beetle.x2 initialized //Class load //i = 9, j = 0 //Beetle.k initialized //k = 47 //j = 39 //Se o main fosse apenas: new Beetle(); //static Insect.x1 initialized //static Beetle.x2 initialized //i = 9, j = 0 //Beetle.k initialized //k = 47 //j = 39 Novembro/2006 23

Inicialização e Carga de Classe Inicialização procura pelo método estático Beetle.main() para carregar a classe Beetle (Beetle.class) precisa antes carregar Insect inicialização estática em Insect inicialização estática da subclasse Beetle imprime Class load chamada do construtor da superclasse Insect variáveis do objeto inicializadas (ordem textual) construtor de Insect executado retorna ao construtor de Beetle variáveis do objeto inicializadas (ordem textual) construtor de Beetle executado Novembro/2006 24