Programação Orientada a Objetos



Documentos relacionados
HERANÇA. Prog. Orientada a Objetos em Java

Programação Orientada a Objetos (DPADF 0063)

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

Programação Orientada a Objetos (DPADF 0063)

Orientação a Objetos e a Linguagem Java

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

Análise e Projeto Orientados por Objetos

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

Computação II Orientação a Objetos

Prof. Jhonatan Fernando

Programação por Objectos. Java

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

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

Programação Orientada a Objetos C++

Técnicas de Programação II

Herança. Alberto Costa Neto DComp - UFS

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

Polimorfismo. Prof. Leonardo Barreto Campos 1

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

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

Algoritmos e Programação II. Sobrecarga

Introdução a Java. Hélder Nunes

Programação por Objectos. Java

Java 2 Standard Edition Como criar classes e objetos

ILP - Introdução à Linguagem de Programação. Plano de estudo: - Constantes e variáveis. - Atribuindo valores às variáveis.

EXERCÍCIOS SOBRE ORIENTAÇÃO A OBJETOS

Computação II Orientação a Objetos

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

3.1 Definições Uma classe é a descrição de um tipo de objeto.

Análise de Programação

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

UML: Diagrama de Casos de Uso, Diagrama de Classes

Padrão Básico de Projeto: Interfaces e Polimorfismo

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

Classes Abstratas e Interfaces

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

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

Implementando uma Classe e Criando Objetos a partir dela

Métodos de Construção de Software: Orientação a Objetos. Mestrado em Ciência da Computação 2008 Profa. Itana Gimenes

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

Slide 1 Deitel/Deitel, 8e. Java Como programar Copyright 2010 Pearson Education

Capítulo 4. Packages e interfaces

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

Parte I. Orientação a objetos no PHP. Contato: <lara.popov@ifsc.edu.br> Site:

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

Coleções. Conceitos e Utilização Básica. c Professores de ALPRO I 05/2012. Faculdade de Informática PUCRS

ARRAYS. Um array é um OBJETO que referencia (aponta) mais de um objeto ou armazena mais de um dado primitivo.

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

Banco de Dados. Aula 5 - Prof. Bruno Moreno 06/09/2011

Programação Orientada a Objectos - P. Prata, P. Fazendeiro. Cartão de fidelização de clientes das distribuidoras de combustível.

Programação Orientada a Objetos

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

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

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

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

Desenvolvimento de Aplicações para Internet Aula 7

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

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

Módulo 06 Desenho de Classes

Orientação a Objetos

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

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

Programação Orientada a Objetos. Encapsulamento

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

Módulo Básico. Rua Valorbe, 123 Lauzane Paulista Cep São Paulo SP

PROGRAMAÇÃO ORIENTADA A OBJETO EM PHP

Projeto de Software Orientado a Objeto

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

MODELAGEM VISUAL DE OBJETOS COM UML DIAGRAMA DE CLASSES.

Capítulo 5 Reuso de Classes

Encapsulamento de Dados

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

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

PHP Orientado a Objetos Análise e Desenvolvimento de Sistemas Prof. Marcelo da Silveira Siedler siedler@gmail.com

ÇÃO COM OBJECTOS PROGRAMAÇÃ. Programação com Objectos. Programação com Objectos TUDO É UM OBJECTO TUDO É UM OBJECTO ÍNDICE.

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

PROGRAMAÇÃO ORIENTADA A OBJETOS -TRATAMENTO DE EXCEÇÕES. Prof. Angelo Augusto Frozza, M.Sc. frozza@ifc-camboriu.edu.br

Roteiro do Programa e Entrada/Saída

Algoritmos e Programação

Prof. Me. Marcos Echevarria

Programação Orientada a Objetos em Java

Curso Java Starter. 1

Reuso com Herança a e Composiçã

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

Modelagem de Dados Usando o Modelo Entidade-Relacionamento

Vetores. Professor Dr Francisco Isidro Massettto

Programação Orientada a Objeto

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

PROVA DISCURSIVA - PROFISSIONAL BÁSICO (FORMAÇÃO DE ANÁLISE DE SISTEMAS - DESENVOLVIMENTO) 2 a FASE

Filas. Fabrício J. Barth. BandTec - Faculdade de Tecnologia Bandeirantes

Estrutura Condicional em Java

Orientação a Objetos

BANCO DE DADOS I AULA 6. Wlllamys Araújo willamysaraujo7@gmail.com

3 Classes e instanciação de objectos (em Java)

FUNDAMENTOS DA ORIENTAÇÃO A OBJETOS- REVISÃO

Transcrição:

Programação Orientada a Objetos Engenharia da Computação Professor: Rosalvo Ferreira de Oliveira Neto

Dados Pessoais Rosalvo Ferreira de Oliveira Neto MSc. em ciência da computação (UFPE) rosalvo.oliveira@univasf.edu.br www.univasf.edu.br/~rosalvo.oliveira 3

Tópicos Herança Subtipagem Substituição Variáveis polimórficas

Exemplo do DoME O acrônimo DoME significa Database of Multimedia Entertainment Essencialmente, DoME é uma aplicação que permite armazenar informações sobre CDs e DVDs. A idéia é criar um catálogo de todos os CDs e DVDs que se possui. Os requisitos mínimos que queremos são: Deve permitir que possamos inserir informações sobre CDs e DVDs; Deve armazenar essas informações para que essas informações sejam localizadas depois. E Gere um relatório com todos itens do estoque.

Exemplo do DoME Continuação requisitos Os detalhes que queremos armazenar para CD são: O título do álbum O artista (nome da banda ou cantor) O número de faixa do CD; O tempo total de reprodução; Uma Flag indicando se o produto está disponível; Um comentário.

Exemplo do DoME Continuação requisitos Os detalhes que queremos armazenar para DVD são: O título do DVD; O nome do diretor; O tempo total de reprodução; Uma Flag indicando se o produto está disponível; Um comentário.

Implementando sem Herança public class CD { private String titulo; private String artista; private int numfaixa; private double duracao; private boolean disponivel; private String comentario;

Implementando sem Herança public CD(String atitulo, String aartista, int anumfaixa, double aduracao, boolean adisponivel, String acomentario){ titulo = atitulo; artista = aartista; numfaixa = anumfaixa; duracao = aduracao; disponivel = adisponivel; comentario = acomentario;

Implementando sem Herança Métodos Gets & Sets

public void print(){ Implementando sem Herança System.out.println(" "); System.out.println("titulo: " + titulo); System.out.println("Número de faixa: " + numfaixa); System.out.println("artista: " + artista); System.out.println("duracao: " + duracao); System.out.println("disponivel: " + disponivel); System.out.println("comentario: " + comentario);

public class DVD { Implementando sem Herança private String titulo; private String diretor; private double duracao; private boolean disponivel; private String comentario;

Implementando sem Herança public DVD(String atitulo, String adiretor, double aduracao, boolean adisponivel, String acomentario){ titulo = atitulo; diretor = adiretor; duracao = aduracao; disponivel = adisponivel; comentario = acomentario;

Implementando sem Herança Métodos Gets & Sets

public void print(){ Implementando sem Herança System.out.println(" "); System.out.println("titulo: " + titulo); System.out.println("diretor: " + diretor); System.out.println("duracao: " + duracao); System.out.println("disponivel: " + disponivel); System.out.println("comentario: " + comentario);

Implementando sem Herança import java.util.arraylist; public class DataBase { private ArrayList<DVD> listadvd; private ArrayList<CD> listacd; public DataBase(){ listacd = new ArrayList<CD>(); listadvd = new ArrayList<DVD>();

Implementando sem Herança public void inserircd(cd acd){ listacd.add(acd); public void inserirdvd(dvd advd){ listadvd.add(advd);

Implementando sem Herança public void imprimirestoque(){ System.out.println("Imprimindo todos os CDs"); for (CD lcd: listacd){ lcd.print(); System.out.println(" "); System.out.println("Imprimindo todos os DVDs"); for (DVD ldvd: listadvd){ ldvd.print();

Vantagens da Herança Evitar duplicação de código; Reutilização de código; Manutenção mais fácil; Extensibilidade.

Utilizando Herança A herança permite definir uma classe como uma extensão de outra. Uma superclasse é uma classe estendida por outra classe. Uma subclasse é uma classe que estende (herda de) outra classe. Ela herda todos os campos e métodos de sua superclasse.

Hierarquias de classes Animal Mamífero Ave Cão Gato Galinha Pardal

Herança em JAVA Public class Animal{... Public class Mamifero extends Animal{...

Construtor de superclasse O construtor de uma subclasse sempre deve invocar o construtor da sua superclasse como sua primeira instrução. Se o código-fonte não incluir essa chamada, o Java tentará inserir uma chamada automaticamente. A chamada equivalente é: Super();

Variáveis e subtipos Variáveis podem armazenar objetos de seu tipo declarado ou de qualquer subtipo de seu tipo declarado. Exemplo: Veículo Carro Bicicleta Veiculo v1 = new Veículo(); Veiculo v2 = new Carro(); Veiculo v3 = new Bicicleta();

Substituição Os objetos de subtipo podem ser utilizados onde quer que os objetos de um supertipo sejam esperados. Isso é chamado de substituição. Carro c1 = new Veiculo(); // Isso é um erro! Carro c1 = new Bicicleta(); // Isso é um erro!

Conversão de tipo (cast) Às vezes a regra que não podemos atribuir de um supertipo a um subtipo é mais restritiva do que necessária. Por exemplo: Veiculo v; Carro c = new Carro(); v = c; // Correto c = v; // Erro Utilizando um operador de conversão de tipo: c = (Carro) v; // Correto

Polimorfismo Possibilidade de uma classe possuir mais de um método com mesmo nome porém com parâmetros diferentes; Um objeto pode responder de diferentes maneiras a um método de mesmo nome; A decisão de qual método chamar é feita em tempo de execução; A classe que sofreu a invocação procura por um método que possa ser aplicado. Caso não encontre a procura é repassada para a superclasse. Obs: Caso a resolução da chamada de métodos seja feita em tempo de compilação, chama-se overloading.

Polimorfismo de métodos Polimorfismo de métodos Chamadas de métodos em java são polimórficas. A mesma chamada de método pode, em momentos diferentes, invocar diferentes métodos, dependendo do tipo dinâmico da variável utilizada para fazer essa chamada. O tipo estático de uma variável V é o tipo declarado no código-fonte na instrução de declaração de variável. O tipo dinâmico de uma variável V é o tipo de objeto que está atualmente armazenado em V.

Chamadas super em métodos Super.nomeDoMétodo(Parametros);

Novo Exercício Implementar o Exemplo do DoME utilizando Herança!

Implementando com Herança public class Produto { private String titulo; private double duracao; private boolean disponivel; private String comentario;

Implementando com Herança public Produto(String atitulo, double aduracao, boolean adisponivel, String acomentario){ titulo = atitulo; duracao = aduracao; disponivel = adisponivel; comentario = acomentario;

Implementando com Herança Métodos Gets & Sets

Implementando com Herança public void print(){ System.out.println(" "); System.out.println("titulo: " + titulo); System.out.println("duracao: " + duracao); System.out.println("disponivel: " + disponivel); System.out.println("comentario: " + comentario);

Implementando com Herança public class CD extends Produto{ private String artista; private int numfaixa;

Implementando com Herança public CD(String atitulo, double aduracao, boolean adisponivel, String acomentario, String aartista, int anumfaixa){ super(atitulo, aduracao, adisponivel, acomentario); this.artista = aartista; this.numfaixa = anumfaixa;

Implementando com Herança Métodos Gets & Sets

Implementando com Herança public void print(){ super.print(); System.out.println("artista: " + artista); System.out.println("Número de Faixas: " + numfaixa); System.out.println(" ");

Implementando com Herança public class DVD extends Produto{ private String diretor; public DVD(String atitulo, double aduracao, boolean adisponivel, String acomentario, String adiretor){ super(atitulo, aduracao, adisponivel, acomentario); diretor = adiretor;

Implementando com Herança public void print(){ super.print(); System.out.println("Diretor: " + diretor);

Implementando com Herança import java.util.arraylist;; public class DataBase { private ArrayList<Produto> listaprodutos; public DataBase(){ listaprodutos = new ArrayList<Produto>();

Implementando com Herança public void inserirproduto(produto aproduto){ listaprodutos.add(aproduto); public void imprimirestoque(){ for(produto lproduto: listaprodutos){ lproduto.print();

Dúvidas