Reutilização de Classes Cap. 8 Introdução à Programação OO Rafael Santos

Tamanho: px
Começar a partir da página:

Download "Reutilização de Classes Cap. 8 Introdução à Programação OO Rafael Santos"

Transcrição

1 Cap. 8 Introdução à Programação OO Rafael Santos Prof. Gustavo Willam Pereira ENG10082 Programação II Créditos: Prof. Clayton Vieira Fraga Filho

2 Um dos maiores benefícios que a Programação Orientada a Objeto nos proporciona é a reutilização de código. A reutilização se caracteriza pelo aproveitamento de classes e seus métodos que já estejam escritos e que já tenham o seu funcionamento testado e comprovado. A Reutilização de código diminui a necessidade de escrever novos métodos e classes gerando economia de tempo e segurança. 2 2

3 Mecanismo de Reuso: Diminui a necessidade de reescrever código: menos trabalho para o programador. Permite o aproveitamento de código pré-existente (livre de erro e otimizado): menos chances de cometer erros Em linguagens convencionais: biblioteca de funções e procedimentos 3

4 Existem duas maneiras de conseguir esse reaproveitamento: Através de Composição ou através de. 4

5 Delegação ou composição O primeiro mecanismo de reaproveitamento de classes em Java é conhecido como delegação composição ou composição. Novas classes estendem uma outra classe base se uma instância da classe base for incluída como um dos campos (atributos) da nova classe, que será então composta de campos específicos e de uma instância de uma classe base. Os métodos da classe base podem ser executados, se escrevermos métodos correspondentes na classe nova que chamam os da classe base, desta forma delegando a execução dos métodos. 5

6 Delegação ou composição Consideremos como exemplo as classes Data, que representa uma data, e a classe Hora, que representa uma hora (incluindo segundos) ~dia: byte ~mês: byte ~ano: short Data <<create>>+data(d: byte, m: byte, a: short) +tostring(): String ~hora: byte ~minuto: byte ~segundo: byte Hora <<create>>+hora(h: byte, m: byte, s: byte) +tostring(): String Com estas classes, podemos criar a classe DataHora, que representa simultaneamente uma data e uma hora, sem que seja necessário reescrever os campos e métodos contidos nas classes Data e Hora. 6

7 Delegação ou composição A classe DataHora, que reusa as classes Data e Hora através de delegação. A data e hora são representadas por instâncias das respectivas classes que estão embutidas na classe DataHora, e toda a interação entre esta classe e as embutidas é feita através da chamada de métodos das classes embutidas. Data Hora ~dia: byte ~mês: byte ~ano: short <<create>>+data(d: byte, m: byte, a: short) +tostring(): String ~hora: byte ~minuto: byte ~segundo: byte <<create>>+hora(h: byte, m: byte, s: byte) +tostring(): String DataHora ~estadata: Data ~estahora: Hora <<create>>+datahora(h: byte, min: byte, s: byte, d: byte, m: byte, a: short) +tostring(): String 7

8 Delegação ou composição: Classe DataHora 8

9 Delegação ou composição: Classe DataHora Algumas características interessantes da classe DataHora são: Não existem campos na classe DataHora a não ser uma instância da classe Data e uma da classe Hora O construtor completo da classe DataHora recebe seis argumentos, correspondentes ao dia, mês, ano, hora, minuto e segundo que devem ser representados pela classe DataHora, e repassa estes argumentos para os construtores que inicializarão as instâncias das classes Data e Hora. O construtor da classe DataHora delega aos outros construtores a inicialização dos campos. O mesmo acontece com o construtor parcial, exceto que este considera que a hora é, por default, meia-noite. 9

10 Delegação ou composição: Classe DataHora O método tostring também delega o seu funcionamento aos métodos tostring das classes Data e Hora, que retornarão Strings que são concatenadas para criar o resultado da chamada do método tostring da classe DataHora. Uma das vantagens da reutilização de classes pode ser vista com o exemplo da classe DataHora: a nova classe é capaz de representar simultaneamente uma data e hora sem ser muito complexa. A complexidade (capacidade de verificar se a data ou hora estão corretas, etc.) é implementada pelos métodos das classes Data e Hora, que são simplesmente reutilizados. 10

11 Delegação ou composição Um outro exemplo de reaproveitamento de classes existentes usando o mecanismo de delegação pode ser visto na classe RegistroAcademicoDeGraduacao: A classe RegistroAcademicoDeGraduacao, que reusa a classe Data através de delegação. 11

12 Delegação ou composição Alguns pontos interessantes da classe RegistroAcademicoDeGraduacao são: A classe RegistroAcademicoDeGraduacao contém campos para representação dos dados de um aluno regularmente matriculado em um curso de graduação. Um dos campos (datadenascimento) é uma instância da classe Data, que deve ser construída e manipulada usando métodos dela mesma. O método tostring da classe RegistroAcademicoDeGraduacao cria uma String com os valores dos campos da classe concatenados. Para obter os valores formatados do campo datadenascimento, o método tostring da classe Data é chamado implicitamente. Este é mais um exemplo de delegação: a classe RegistroAcademicoDeGraduacao delega à classe Data a formatação de seus campos em uma String, usando esta String como resultado parcial. A classe DemoRegistroAcademicoDeGraduacao, demonstra o uso de instâncias da classe RegistroAcademicoDeGraduacao. 12

13 O mecanismo de reaproveitamento por delegação ou composição permite o reuso de classes já existentes como instâncias de novas classes. As classes originais ficam assim contidas na nova classe. Reuso de classes via o mecanismo de delegação é útil quando consideramos que a classe que reusa instâncias de outras é composta das outras classes. Um bom exemplo é o da classe DataHora, que é composta das classes Data e Hora. Outros exemplos seriam dados pelas classes que simplesmente utilizam uma ou mais instâncias da classe Data juntamente com outros dados. 13

14 Nem sempre o mecanismo de delegação é o mais natural para reutilização de classes já existentes, embora seja simples. Em especial, quando queremos usar uma classe para servir de base à criação de outra mais especializada; A relação de composição imposta pelo uso do mecanismo de delegação acaba por criar soluções pouco naturais, ou comuns, ferindo o conceito de mapeamento direto. 14

15 Todas as classes de Java descendem de uma classe chamada Object - mesmo que a declaração extends Object seja omitida de classes criadas pelo usuário, elas implicitamente herdarão da classe Object; Esta classe por si não contém campos ou métodos úteis, não devendo ser usada diretamente, servindo mais para declarar métodos genéricos (como, por exemplo, tostring) que todas as classes devem implementar através da sobreposição; 15

16 Como exemplo consideremos as classes Pessoa e Funcionario: Uma instância de Pessoa pode ser declarada dentro da classe Funcionario para representar os dados da pessoa/funcionário. Se criássemos uma classe ChefeDeDepartamento considerando que um chefe de departamento é um funcionário que é responsável por um departamento, poderíamos declarar uma instância de Funcionario dentro da classe ChefeDeDepartamento e acrescentar alguns campos que diferenciam ChefeDeDepartamento de Funcionario. 16

17 A relação entre as classes ChefeDeDepartamento, Funcionario e Pessoa seria, então, de composição: pela declaração dos seus campos veríamos que um ChefeDeDepartamento contém um Funcionario, que por sua vez contém uma Pessoa. Apesar de ser possível descrever as classes assim, a solução é pouco natural: embora possamos dizer que a classe DataHora contém uma data e uma hora, declarar que a classe ChefeDeDepartamento contém um funcionário soa artificial. Na verdade, um chefe de departamento é um tipo de funcionário, que deve ter campos adicionais para representar dados que são específicos de um chefe de departamento, e métodos para manipular estes campos. 17

18 O mecanismo de herança permite que criemos uma classe usando outra como base e descrevendo ou implementando as diferenças e adições da classe usada como base, reutilizando os campos e métodos não-privados da classe-base. O mecanismo de herança é o mais apropriado para criar relações é- um-tipo-de entre classes. Com o mecanismo de herança, podemos declarar a classe Funcionario como sendo um tipo de Pessoa, e a classe Funcionario herdará todos os campos e métodos da classe Pessoa, não sendo necessária a sua re-declaração. Evidentemente uma classe herdeira pode acrescentar campos e métodos à classe original. 18

19 Exemplo: Pessoa, Funcionario e ChefedeDepartamento 19

20 20

21 Alguns dos pontos interessantes da classe Funcionario são: A classe Funcionario, na sua declaração, contém a palavra-chave extends, seguida de um nome de classe, no caso, Pessoa. A declaração com extends significa que a classe Funcionario conterá todos os campos e métodos da classe Pessoa mais os declarados dentro da própria classe Funcionario. Curiosamente, como os campos da classe Pessoa foram declarados como sendo privados da classe Pessoa, eles somente poderão ser acessados por métodos da classe Pessoa (que tenham sido declarados como public). 21

22 Continuação... Pelo mecanismo de herança, estes métodos estarão disponíveis para uso na classe Funcionario - desta forma os métodos herdados da classe Pessoa para a classe Funcionario podem acessar os campos da classe Pessoa que não poderiam ser acessados diretamente por métodos escritos na classe Funcionario. 22

23 Continuação... A classe Funcionario tem um método qualsalário que retorna o salário do funcionário, e é um marco da diferença entre as classes Funcionario e Pessoa -consideramos que somente Pessoas que são Funcionarios tem o dado salário e um método para acessar o campo correspondente a esse dado. Este método é declarado como final, fazendo com que classes herdeiras não possam sobrepô-lo. 23

24 Continuação... Uma classe pode reusar outras usando ao mesmo tempo o mecanismo de herança e o de delegação: a classe Funcionario herda da classe Pessoa e ao mesmo tempo usa uma instância da classe Data. É importante, ao criar uma classe com o mecanismo de herança, considerar de qual classe ela deve herdar -não faria muito sentido, por exemplo, declarar Funcionario herdando da classe Data e contendo uma instância da classe Pessoa. A classe Funcionario pode ser considerada um tipo de Pessoa, mas definitivamente não é um tipo de Data. 24

25 Alguns pontos de interesse da classe ChefeDeDepartamento são: Consideramos que a classe ChefeDeDepartamento é um tipo de Funcionario e declaramos a classe como herdando da classe Funcionario. É perfeitamente possível (e, em muitos casos, necessário) declarar classes que descendem de classes que já descendem de outras. A classe herdeira terá acesso (direta ou indiretamente) a todos os campos e métodos das classes ancestrais, exceto em situações que serão discutidas adiante. 25

26 Alguns pontos de interesse da classe ChefeDeDepartamento são: O construtor da classe ChefeDeDepartamento recebe como argumentos dados necessários para inicializar uma instância da classe Funcionario, além de dados para inicializar os campos que são específicos da classe. Novamente, os dados necessários para inicializar uma instância da classe Funcionario são passados como argumentos para o construtor da classe Funcionario através da palavra-chave super. Já sabemos que o construtor da classe Funcionario fará o mesmo, chamando o construtor da classe Pessoa, que é a sua ancestral. 26

27 Alguns pontos de interesse da classe ChefeDeDepartamento são: De forma similar, o método tostring da classe ChefeDeDepartamento executa explicitamente o método tostring da classe ancestral (Funcionario), concatenando seu resultado com o dos métodos tostring das classes String e Data, que serão chamados implicitamente. A classe ChefeDeDepartamento tem um método qualdepartamento que retorna o departamento chefiado, que marca a diferença entre as classes ChefeDeDepartamento e Funcionario. 27

28 A palavra-chave super Nos exemplos mostrados nas classes Funcionario e ChefeDeDepartamento vimos que classes derivadas ou subclasses podem ter acesso a métodos das superclasses, usando a palavra-chave super. O acesso a métodos de classes ancestrais é útil para aumentar a reutilização de código: Se existem métodos na classe ancestral que podem efetuar parte do processamento necessário, devemos usar o código que já existe (e, esperançosamente, funciona) em vez de reescrevê-lo. 28

29 A palavra-chave super Existem duas maneiras de se reutilizar métodos de classes ancestrais que não tenham sido declarados como private: Se a execução do método for a mesma para a superclasse e a subclasse, então instâncias da subclasse podem chamar diretamente o método como se fosse delas mesmas; É o caso do método qualsalário, que é declarado na classe. Como o método não teve que ser reescrito ou mesmo declarado na classe ChefeDeDepartamento, houve uma economia no desenvolvimento da classe descendente. 29

30 A palavra-chave super A segunda maneira de executar métodos da classe ancestral é mais complexa: partimos do pressuposto que não existe na classe ancestral um método que faça, para a classe descendente, exatamente o que queremos, mas existem métodos que executam parte da tarefa ou resolvem parte do problema. Desta maneira, uma classe descendente poderia executar a parte que resolve o problema parcial chamando o método correspondente da classe ancestral e depois executar comandos que completassem a função desejada. 30

31 Sobreposição e ocultação Quando criamos classes estendidas através do mecanismo de herança, podemos definir novos campos e métodos que são específicos da classe herdeira Também redeclarar campos e métodos que tem a mesma assinatura de métodos declarados em classes ancestrais, mas com funcionalidade diferente. 31

32 Sobreposição e ocultação A declaração de métodos com a mesma assinatura que métodos de classes ancestrais chama-se sobreposição ou superposição. A razão de sobrepormos métodos é que métodos de classes herdeiras geralmente executam tarefas adicionais que os mesmos métodos das classes ancestrais não executam. Exemplo de sobreposição: métodos que fazem a impressão de campos: a classe ancestral somente imprime os campos que contém, então se adicionamos campos à classe descendente, o método de impressão desta não poderá ser o herdado, que não imprimirá os campos adicionais. 32

33 Sobreposição e ocultação A declaração de campos em uma classe descendente com o mesmo nome de campos declarados na classe ancestral chamase ocultação. Ao contrário da sobreposição de métodos, que é bastante útil e comum em classes herdeiras, a ocultação de campos não oferece muitas vantagens, e as poucas oferecidas podem facilmente ser implementadas através de métodos que retornam valores e são superpostos de acordo com a necessidade. 33

34 Sobreposição e ocultação Exemplo: Automovel, AutomovelBasico e AutomovelDeLuxo 34

35 35

36 Sobreposição e ocultação A O campo NUMEROMÁXIMODEPRESTAÇÕES e o método quantasprestações, que retorna o valor deste campo foram declarados na classe Automovel e herdados pela classe AutomovelBasico; O campo é redeclarado (oculto) pela classe AutomovelDeLuxo, que redeclara também o método quantasprestações; Se este método não fosse redeclarado, sobrepondo o da classe ancestral, seria herdado, mas retornaria o valor do campo declarado na superclasse, já que métodos herdados não podem acessar campos declarados em subclasses. 36

37 Sobreposição e ocultação As principais regras de sobreposição de métodos e ocultação de campos, e regras de uso de modificadores de acesso em classes herdadas são: A sobreposição de um método em uma subclasse não elimina o acesso ao método de mesma assinatura na classe ancestral - este pode ser acessado, de dentro da classe herdeira, com a palavra-chave super, contanto que não tenha sido declarado como private. Veja, como exemplo, os vários métodos tostring de classes herdeiras mostradas. 37

38 Sobreposição e ocultação Continua... Métodos declarados em uma subclasse com o mesmo nome mas assinaturas diferentes (por exemplo, número de argumentos diferentes) dos métodos da superclasse não sobrepõem estes métodos. Métodos podem ser sobrepostos com diferentes modificadores de acesso, contanto que os métodos sobrepostos tenham modificadores de acesso menos restritivos. Em outras palavras, podemos declarar um método na superclasse com o modificador de acesso private e sobrepor este método em uma subclasse com o modificador de acesso public, mas não 38 podemos fazer o contrário.

39 Sobreposição e ocultação Continua... Métodos estáticos declarados em classes ancestrais não podem ser sobrepostos em classes descendentes, nem mesmo se não forem declarados como estáticos. Se um campo é declarado em uma superclasse e oculto em subclasses, e métodos que acessam este campo são herdados, estes métodos farão referência ao campo da classe onde foram declarados. 39

40 Sobreposição e ocultação Continua... Qualquer método da classe herdeira pode chamar qualquer método da classe ancestral que tenha sido declarado como public, protected ou sem declaração explícita de modificador. Métodos declarados como private não são acessíveis diretamente, mas podem ser chamados indiretamente a partir de métodos que não sejam private na classe ancestral; 40

41 Sobreposição e ocultação Por exemplo, a classe ComputadorDeBordo, que encapsula os campos e métodos necessários para implementar um computador de bordo de automóveis. Esta classe poderia ter o método privado calculaquilometragemrodada e o método público mostraestatísticasdeconsumo, com o método mostraestatísticasdeconsumo executando o método calculaquilometragemrodada como parte de seu processamento. 41

42 Sobreposição e ocultação Se a classe ComputadorDeBordoDeCaminhao for criada como sendo herdeira da classe ComputadorDeBordo, ela não poderá executar o método calculaquilometragemrodada diretamente pois este foi declarado como sendo privado da classe ComputadorDeBordo, mas o método será executado indiretamente através da chamada ao método público herdado mostraestatísticasdeconsumo. 42

43 Sobreposição e ocultação 43

44 Sobreposição e ocultação Continua... Métodos declarados como final são herdados por subclasses, mas não podem ser sobrepostos (a não ser que a sua assinatura seja diferente). Por exemplo, a classe ChefeDeDepartamento não pode declarar um método qualsalário pois este foi declarado como final na classe ancestral Funcionario. Classes inteiras podem ser declaradas como finais, na forma final class... Se uma classe é declaradas declarada como final, todos os seus métodos serão finais, mas não os seus campos. A declaração de uma classe como final efetivamente impede o mecanismo de herança - o compilador não compilará uma classe declarada como herdeira de uma classe final. 44

45 Polimorfismo O mecanismo de herança permite a criação de classes a partir de outras já existentes com relações é-um-tipo-de, de forma que a partir de uma classe genérica, classes mais especializadas possam ser criadas. Vimos alguns exemplos de classes que seguem esta regra: Funcionario é-um-tipo-de Pessoa,e AutomovelDeLuxo é-umtipo-de AutomovelBasico, que por sua vez é-um-tipo-de Automovel. 45

46 Polimorfismo A relação é-um-tipo-de entre classes permite a existência de outra característica fundamental de linguagens de programação orientadas a objetos: polimorfismo. Polimorfismo ( muitas formas ) permite a manipulação de instâncias de classes que herdam de uma mesma classe ancestral de forma unificada: podemos escrever métodos que recebam instâncias de uma classe C, e os mesmos métodos serão capazes de processar instâncias de qualquer classe que herde da classe C, já que qualquer classe que herde de C é-um-tipo-de C. Um exemplo prático de polimorfismo é ConcessionariaDeAutomoveis. dado pela classe 46

47 Polimorfismo A classe ConcessionariaDeAutomoveis tem um método (imprime) que recebe uma instância da classe Automovel como argumento, e imprime os dados desta instância, usando os métodos tostring, quantocusta e quantasprestacoes da classe. Este mesmo método pode receber, como argumentos, instâncias das classes AutomovelBasico, AutomovelDeLuxo e de qualquer outra classe que herde da classe Automovel ou de suas herdeiras, uma vez que estas terão os métodos necessários para a execução do método imprime. 47

48 Polimorfismo Vale a pena notar que é possível implementarmos, em uma classe, métodos polimórficos e sobrecarregados simultaneamente. Poderíamos, por exemplo, criar métodos para processamento de instâncias de uma classe genérica e outros que processariam instâncias de classes mais especializadas (subclasses) de forma diferenciada. A classe EmprestimoBancario demonstra uma aplicação desta técnica. 48

49 Polimorfismo Os pontos interessantes da classe EmprestimoBancario são: O interpretador Java decidirá, em tempo de execução, qual dos dois métodos será chamado para cada instância criada no método main. Se a instância passada como argumento for da classe ChefeDeDepartamento ou da classe Funcionario, o segundo método será chamado: apesar das classes ChefeDeDepartamento e Funcionario serem um-tipo-de Pessoa, elas são mais próximas da classe Funcionario do que da classe Pessoa. 49

50 Polimorfismo Os pontos interessantes da classe EmprestimoBancario são: Em outras palavras, se houverem vários métodos sobrecarregados que tratam de classes herdeiras de uma classe ancestral, o interpretador Java tentará sempre chamar o método mais adequado para cada instância, sendo que o método mais adequado será o que receber como argumentos a classe mais próxima em termos de herança (A classe ChefeDeDepartamento é mais próxima da classe Funcionario do que da classe Pessoa). 50

51 Polimorfismo Os pontos interessantes da classe EmprestimoBancario são: O primeiro método calculaempréstimo recebe como argumento uma instância da classe Pessoa ou de qualquer classe herdeira desta que não seja herdeira da classe Funcionario (já que instâncias de classes herdeiras de Funcionario serão processadas pelo segundo método calculaempréstimo). Este método retorna um valor constante, assumindo que qualquer pessoa (que não um funcionário) possa ter um empréstimo de mil reais. 51

52 Polimorfismo Os pontos interessantes da classe EmprestimoBancario são: Se uma instância da classe Aluno, que herdasse da classe Pessoa, fosse passada como argumento para o método calculaempréstimo, a primeira versão seria chamada. Se por outro lado, uma instância da classe PresidenteDaEmpresa, que fosse herdeira da classe ChefeDeDepartamento fosse passada para o método, a segunda versão seria executada. 52

53 Polimorfismo Os pontos interessantes da classe EmprestimoBancario são: O segundo método calculaempréstimo, que calculará o empréstimo para qualquer instância de qualquer classe que herde da classe Funcionario, verifica internamente se a instância passada como argumento é uma instância da classe ChefeDeDepartamento ou da própria classe Funcionario. Isto é feito com a palavra-chave instanceof, em expressões como referência-à-instância instanceof nome-da-classe, que retorna true se referência-à-instância for uma instância de nome-da-classe e false se não o for. 53

54 Polimorfismo Os pontos interessantes da classe EmprestimoBancario são: É importante notar que o método primeiramente verifica se a instância passada é uma instância da classe ChefeDeDepartamento (mais específica) para depois verificar se a instância é da classe Funcionario (mais genérica). A ordem de verificação é essencial, pois uma instância da classe ChefeDeDepartamento também é uma instância da classe Funcionario - se esta fosse verificada primeiro, a condição marcada com o else no método nunca seria verificada. 54

55 Polimorfismo Os pontos interessantes da classe EmprestimoBancario são: O método qualsalário é definido na classe Funcionario e nas suas herdeiras, mas não na classe Pessoa, ancestral de Funcionario. Por causa disso, não é possível chamar o método qualsalário a partir de uma instância da classe Pessoa - no primeiro método calculaempréstimo, que recebe um argumento que é uma instância da classe Pessoa, não podemos testar instâncias e chamar o método qualsalário se a instância for de Funcionario ou ChefeDeDepartamento, a não ser que efetuemos a conversão explícita (cast) das instâncias das classes. 55

56 Polimorfismo Os pontos interessantes da classe EmprestimoBancario são: Assim como tipos nativos podem ser convertidos explicitamente para outros tipos seguindo certas regras, instâncias de classes também podem ser convertidas para outras, contanto que a conversão seja da classe mais específica para a mais genérica, ou seja, da classe descendente para a classe ancestral. Por exemplo, podemos fazer a conversão explícita de uma instância da classe Funcionario para a classe Pessoa, já que Funcionario é-um-tipo-depessoa. Similarmente, também podemos converter da classe ChefeDeDepartamento para a classe Pessoa. 56

57 Polimorfismo Os pontos interessantes da classe EmprestimoBancario são: As regras de cast entre instâncias de classes não permitem a conversão de classes mais genéricas para classes mais específicas, nem de classes que não estejam em uma hierarquia de herança: não podemos converter da classe Funcionario para ChefeDeDepartamento, pois Funcionario não é-um-tipode ChefeDeDepartamento, nem da classe Pessoa para String. A classe EmprestimoBancarioComCast demonstra o uso de conversão explícita entre as classes Pessoa, Funcionario e ChefeDeDepartamento. 57

Programação Orientada a Objetos SANTOS, Rafael

Programação Orientada a Objetos SANTOS, Rafael Programação Orientada a Objetos SANTOS, Rafael Neste capítulo e nos seguintes serão usados intensamente os conceitos básicos de OO e da linguagem estudados até agora, com ênfase para os de número 1, 2

Leia mais

Linguagem de Programação III

Linguagem de Programação III Linguagem de Programação III Aula-6 Reutilização de Classes Prof. Esbel Tomás Valero Orellana Até Aqui Introdução a POO e sua implementação em Java Atributos, métodos e encapsulamento dos mesmos Trabalhando

Leia mais

Linguagem de Programação III

Linguagem de Programação III Linguagem de Programação III Aula-7 Reutilização de Classes Prof. Esbel Tomás Valero Orellana Até Aqui Introdução a POO e sua implementação em Java Atributos, métodos e encapsulamento dos mesmos Trabalhando

Leia mais

Linguagem de Programação II Herança

Linguagem de Programação II Herança Linguagem de Programação II Herança Prof. Alessandro Borges 2 Tópicos Reutilização de classes Delegação Herança Definição Superclasse e Subclasse A palavra reservada extends Método construtor com herança

Leia mais

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

Programação Orientada a Objetos. Professor: André Luis Meneses Silva br.geocities.com/programacao2ufs Programação Orientada a Objetos Professor: André Luis Meneses Silva andreluis.ms@gmail.com br.geocities.com/programacao2ufs [ Conteúdo ] Objeto Mensagens Classe Encapsulamento Visibilidade Membros de Instância

Leia mais

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

Lista 05 Herança. public class PessoaFisica extends Pessoa { private String RG; public PessoaFisica(){ super(); } public String getrg(){ return RG; } Lista 05 Herança 1. Analisando a classe Java abaixo podemos observar que a mesma possui apenas um atributo, um construtor e dois métodos. Perceba que dentro do método main estão sendo invocados métodos

Leia mais

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

Introdução a classes e objetos. Prof. Marcelo Roberto Zorzan Introdução a classes e objetos Prof. Marcelo Roberto Zorzan Herança Aula de Hoje Problema Considere uma empresa que tenha tipos de empregados no aplicativo de folha de pagamento Um empregado tem nome,

Leia mais

Programação Orientada a Objetos JAVA - NETBEANS

Programação Orientada a Objetos JAVA - NETBEANS Programação Orientada a Objetos JAVA - NETBEANS Agenda Programação Orientada a Objeto (POO) Conceitos sobre POO Pilares da POO Objeto Classe Construtores Troca de Mensagens Pilares da POO Encapsulamento

Leia mais

Linguagem de Programação Orientada a Objeto Polimorfismo, Classes Abstractas e Interfaces

Linguagem de Programação Orientada a Objeto Polimorfismo, Classes Abstractas e Interfaces Linguagem de Programação Orientada a Objeto Polimorfismo, Classes Abstractas e Interfaces Professora Sheila Cáceres Polimorfismo Polimorfismo Polimorfismo é a característica única de linguagens orientadas

Leia mais

Herança. Prof. Fernando V. Paulovich 23 de agosto de 2010

Herança. Prof. Fernando V. Paulovich  23 de agosto de 2010 Herança SCC0604 - Programação Orientada a Objetos Prof. Fernando V. Paulovich http://www.icmc.usp.br/~paulovic paulovic@icmc.usp.br Instituto de Ciências Matemáticas e de Computação(ICMC) Universidade

Leia mais

Herança Tiago Eugenio de Melo

Herança Tiago Eugenio de Melo Herança Tiago Eugenio de Melo tiago@comunidadesol.org Herança Conceito: Herança é a capacidade de especializar tipos de objetos (classes), de forma que os tipos especializados contenham, além de características

Leia mais

Aula 9 Herança. Prof. Jefersson Alex dos Santos

Aula 9 Herança. Prof. Jefersson Alex dos Santos Aula 9 Herança Prof. Jefersson Alex dos Santos Roteiro Introdução Conversão de tipo explícita (Cast) Acesso Protegido A classe Object A classe Class Reflexão Recomendações de Projeto Herança Técnica necessária

Leia mais

Classes e Objetos. Sintaxe de classe em Java

Classes e Objetos. Sintaxe de classe em Java Classes e Objetos Classes e Objetos A Programação Orientada a Objetos (POO) é uma técnica de programação que se baseia na construção de classes e utilização de objetos. Os objetos são formados por dados

Leia mais

Laboratório de programação II

Laboratório de programação II Laboratório de programação II Herança e Polimorfismo Edson Moreno edson.moreno@pucrs.br http://www.inf.pucrs.br/~emoreno Herança Mecanismo da Orientação a Objeto que permite criar novas classes aproveitando

Leia mais

Programação por Objectos. Java

Programação por Objectos. Java Programação por Objectos Java Parte 6: Herança e Polimorfismo LEEC@IST Java 1/50 Herança revisão (1) A herança é um mecanismo em que a subclasse constitui uma especialização da superclasse. A superclasse

Leia mais

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

Introdução ao Java. Prof. Herbert Rausch Fernandes Introdução ao Java Prof. Herbert Rausch Fernandes Orientação a Objetos Programação Orientada por Objetos: é a construção de sistemas de software como uma coleção estruturada de implementações de tipos

Leia mais

Conceitos de Programação Orientada a Objetos

Conceitos de Programação Orientada a Objetos Conceitos de Programação Orientada a Objetos Tatyana Bitencourt Com as técnicas de orientação a objeto, é possível obter resultados considerados impossíveis pensando de maneira estruturada. Como Java não

Leia mais

Programação Orientada a Objectos - P. Prata, P. Fazendeiro

Programação Orientada a Objectos - P. Prata, P. Fazendeiro 5 Polimorfismo Sobrecarga (overloading) de métodos: public class x { public void m1( ) {... sobrecarga do método m1 public void m1 ( int p ) {... - Diz-se que o nome de um método foi sobrecarregado ( overloaded

Leia mais

C com introdução a OO

C com introdução a OO ... Centro Integrado de Tecnologia da Informação C com introdução a OO ... Centro Integrado de Tecnologia da Informação Aula 9 Ronald Dener - Instrutor Matheus Soares - Monitor 17 / outubro 17 / outubro

Leia mais

Orientação a Objetos AULA 06

Orientação a Objetos AULA 06 Orientação a Objetos AULA 06 Prof. Fabrício Martins Mendonça Conteúdo da Aula ü Herança ü Sobrescrita e reescrita de métodos ü Sobrecarga ü Efeitos de Herança ü Polimorfismo 2 Um dos principais recursos

Leia mais

Prof. A. G. Silva. 30 de outubro de Prof. A. G. Silva INE5603 Introdução à POO 30 de outubro de / 1

Prof. A. G. Silva. 30 de outubro de Prof. A. G. Silva INE5603 Introdução à POO 30 de outubro de / 1 INE5603 Introdução à POO Prof. A. G. Silva 30 de outubro de 2017 Prof. A. G. Silva INE5603 Introdução à POO 30 de outubro de 2017 1 / 1 Especialização de classes (I) (Cap. 6) Operações de abstração como

Leia mais

Linguagem de Programação II Programação Orientada a Objetos. Orientação a Objetos

Linguagem de Programação II Programação Orientada a Objetos. Orientação a Objetos Linguagem de Programação II Programação Orientada a Objetos Orientação a Objetos Prof. Alessandro Borges 2 Tópicos Introdução à Programação Orientada a Objetos Conceitos Objetivos Classes e Objetos Atributos

Leia mais

Linguagem de Programação III

Linguagem de Programação III Linguagem de Programação III Aula-4 Construtores e Sobrecarga Prof. Esbel Tomás Valero Orellana Até Aqui Modelos e POO Classes e sua implementação em Java Encapsulamento Tipos de dados nativos em Java

Leia mais

Universidade da Beira Interior Cursos: Engenharia Informática, Matemática /Informática e Ensino da Informática

Universidade da Beira Interior Cursos: Engenharia Informática, Matemática /Informática e Ensino da Informática 6 Polimorfismo Sobrecarga (overloading) de métodos: public class x { public void m1( ) {... sobrecarga do método m1 public void m1 ( int p ) {... Diz-se que o nome de um método foi sobrecarregado ( overloaded

Leia mais

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

Programação Avançada C++ Slide 12 Nielsen Castelo Damasceno Programação Avançada C++ Slide 12 Nielsen Castelo Damasceno Visibilidade de membros Membro da classe derivada pode usar os membros públicos ( public ) e protegidos ( protected ) da sua classe base (como

Leia mais

Programação Orientada a Objetos

Programação Orientada a Objetos Herança Prof. Edwar Saliba Júnior Fevereiro de 2011 Unidade 07 Herança 1 Reutilização / Reuso São palavras-chave no conceito de herança; Reutilizar um código que já tenha sido escrito, e que já esteja

Leia mais

Professor Leonardo Cabral da Rocha Soares Lattes:

Professor Leonardo Cabral da Rocha Soares Lattes: Professor Leonardo Cabral da Rocha Soares Lattes: http://lattes.cnpq.br/3184602538494393 A Herança, em programação orientada a objetos (POO), é a possibilidade de escrever novas classes partindo de classes

Leia mais

Programação Java (nível intermediário) 4. Polimorfismo

Programação Java (nível intermediário) 4. Polimorfismo Programação Java (nível intermediário) 4 Polimorfismo Introdução Uma linguagem orientada a objetos nos permite definir novos tipos para variáveis Nós definimos um novo tipo através de uma classe Este tipo

Leia mais

Programação Orientada a Objectos - P. Prata, P. Fazendeiro

Programação Orientada a Objectos - P. Prata, P. Fazendeiro 5 Polimorfismo Sobrecarga (overloading) de métodos: public class x { public void m1( ) {... sobrecarga do método m1 public void m1 ( int p ) {... - Diz-se que o nome de um método foi sobrecarregado ( overloaded

Leia mais

A B Classe Genérica D A C. Classe Especializada. Classe Especializada. Características Herdadas

A B Classe Genérica D A C. Classe Especializada. Classe Especializada. Características Herdadas Herança e Polimorfismo Prof. Bruno Gomes bruno.gomes@ifrn.edu.br Programação Orientada a Objetos Revisando -Herança Estrutura Hierárquica e modular Projeção de classes genéricas que podem ser especializadas

Leia mais

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

Programação de Computadores - I. Profª Beatriz Profº Israel Programação de Computadores - I Profª Beatriz Profº Israel Ambiente de Desenvolvimento Herança É um princípio da Programação Orientada a Objetos que permite que as classes compartilhem atributos e métodos

Leia mais

Herança e Polimorfismo - Parte II -

Herança e Polimorfismo - Parte II - Herança e Polimorfismo - Parte II - Programação Orientada a Objetos Java Prof. Geraldo Braz Junior A hierarquia do exemplo DoME 2 Saída incompleta O que queremos CD: A Swingin' Affair (64 mins)* Frank

Leia mais

Programação Java. - Herança e Polimorfismo - Marco Fagundes Marco Fagundes -

Programação Java. - Herança e Polimorfismo - Marco Fagundes Marco Fagundes - Programação Java - Herança e Polimorfismo - Marco Fagundes mfagundes@tre-pa.gov.br 1 Tópicos Herança Ligação Dinâmica Polimorfismo 2 Herança Herança é um conceito que mapeia as classes relacionadas entre

Leia mais

Java First-Tier: Aplicações. Sobrecarga. Orientação a Objetos em Java (II) Sobrecarga de Construtores: Exemplo de Declaração

Java First-Tier: Aplicações. Sobrecarga. Orientação a Objetos em Java (II) Sobrecarga de Construtores: Exemplo de Declaração Java First-Tier: Aplicações Orientação a Objetos em Java (II) Grupo de Linguagens de Programação Departamento de Informática PUC-Rio Sobrecarga Um recurso usual em programação OO é o uso de sobrecarga

Leia mais

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

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

Leia mais

Programação Orientada a Objetos. Vagner Luz do Carmo - Vluzrmos

Programação Orientada a Objetos. Vagner Luz do Carmo - Vluzrmos Programação Orientada a Objetos Vagner Luz do Carmo - Vluzrmos Questão 1 Dada a seguinte classe na linguagem JAVA: public class Carro { public String retornacor(){ ; return Azul ; private String retornachassi(){

Leia mais

Programação Orienta a Objetos

Programação Orienta a Objetos Programação Orienta a Objetos Linguagem de Programação 1 Os atores principais do paradigma de projetos orientados a objetos são chamados de objetos. Um objeto se origina de uma classe, que é uma especificação

Leia mais

Programação. Orientada a Objetos: Herança. Objetos. Relacionamento entre classes. Análise e Projeto Orientados a. Objetos

Programação. Orientada a Objetos: Herança. Objetos. Relacionamento entre classes. Análise e Projeto Orientados a. Objetos Programação Orientada a Objetos: Herança Alexandre César Muniz de Oliveira Análise e Projeto Orientados a Objetos A análise orientada a objetos Determina o que o sistema deve fazer: Quais os atores envolvidos?

Leia mais

Linguagens de Programação

Linguagens de Programação Linguagens de Programação Prof. Miguel Elias Mitre Campista http://www.gta.ufrj.br/~miguel Parte IV Introdução à Programação em C++ (Continuação) Relembrando da Última Aula... Sobrecarga de operadores

Leia mais

Notas de Aula 04: Herança e polimorfismo.

Notas de Aula 04: Herança e polimorfismo. Notas de Aula 04: Herança e polimorfismo. Objetivos da aula: Introduzir o conceito de Heranças Criar uma hierarquia de classes Rever o uso de modificadores de acesso. Apresentar o conceito de polimorfismo

Leia mais

4 Conceito de Herança

4 Conceito de Herança 4 Conceito de Herança Hierarquia de classes e mecanismo de ligação Herança Uma classe pode herdar operações de uma superclasse e as suas operações podem ser herdadas por subclasses. O mecanismo de herança

Leia mais

Programação Orientada a Objetos

Programação Orientada a Objetos Programação Orientada a Objetos Herança e Polimorfismo Prof. Francisco de Assis S. Santos, Dr. São José, 2015. Herança em POO O conceito de herança torna mais rápido o desenvolvimento de softwares complexos

Leia mais

POO e C++: Herança e Polimorfismo

POO e C++: Herança e Polimorfismo POO e C++: Herança e Polimorfismo Márcio Santi Luiz Fernando Martha Conceito de Herança em POO Recurso que torna o conceito de classe mais poderoso; Permite que se construa e estenda continuamente classes

Leia mais

Programação Orientada a Objetos para Redes de Computadores

Programação Orientada a Objetos para Redes de Computadores Programação Orientada a Objetos para Redes de Computadores Prof. Miguel Elias Mitre Campista http://www.gta.ufrj.br/~miguel PARTE 2 Programação em C++ - Herança Herança Criação de uma nova classe de uma

Leia mais

Unidade: sobrecarga, construtores e herança

Unidade: sobrecarga, construtores e herança Unidade: sobrecarga, construtores e herança 0 Unidade: sobrecarga, construtores e herança Sobrecarga Sobrecarregar (do inglês overload) um método é criar mais métodos com o mesmo nome, porém com assinaturas

Leia mais

Herança. Universidade Católica de Pernambuco Ciência da Computação. Prof. Márcio Bueno.

Herança. Universidade Católica de Pernambuco Ciência da Computação. Prof. Márcio Bueno. Universidade Católica de Pernambuco Ciência da Computação Prof. Márcio Bueno poonoite@marciobueno.com Fonte: Material da Profª Karina Oliveira Possibilita o reuso de classes (código-fonte) Usar quando:

Leia mais

TÉCNICAS DE ORIENTAÇÃO A OBJETOS

TÉCNICAS DE ORIENTAÇÃO A OBJETOS TÉCNICAS DE ORIENTAÇÃO A OBJETOS APLICAÇÃO EM: C# E JAVA Sumário INTRODUÇÃO... 4 PARADIGMAS DE PROGRAMAÇÃO... 5 PROGRAMAÇÃO PROCEDURAL... 5 PROGRAMAÇÃO ESTRUTURADA... 5 PROGRAMAÇÃO ORIENTADA A OBJETOS...

Leia mais

Programação Java. Marco Fagundes. - Herança, Classes Abstratas e Interfaces Marco Fagundes -

Programação Java. Marco Fagundes. - Herança, Classes Abstratas e Interfaces Marco Fagundes - Programação Java - Herança, Classes Abstratas e Interfaces - Marco Fagundes mfagundes@tre-pa.gov.br 1 Tópicos Herança Ligação Dinâmica Polimorfismo 2 Herança Herança é um conceito que mapeia as classes

Leia mais

Programação OO em Java. Profa Andréa Schwertner Charão DELC/CT/UFSM

Programação OO em Java. Profa Andréa Schwertner Charão DELC/CT/UFSM Programação OO em Java Profa Andréa Schwertner Charão DELC/CT/UFSM Sumário Herança Visibilidade de atributos e métodos Extensão e sobreposição Uso de super Referências para objetos Polimorfismo Conceitos

Leia mais

UNIDADE 5 Aplicação dos Conceitos de Orientação a Objetos

UNIDADE 5 Aplicação dos Conceitos de Orientação a Objetos UNIDADE 5 Aplicação dos Conceitos de Orientação a Objetos Objetivo da Unidade*: Conhecer e aplicar os conceitos mais importantes associados a orientação a objetos. 5.1 Métodos e atributos estáticos Atributos

Leia mais

Classes, Métodos e Propriedades

Classes, Métodos e Propriedades Ambiente de Programação Visual Classes, Métodos e Propriedades Prof. Mauro Lopes 1-31 22 Objetivos Nesta aula iremos dar continuidade aos elementos de programação da Linguagem C#. Iremos apresentar de

Leia mais

Programação OO em Java. Profa Andréa Schwertner Charão DLSC/CT/UFSM

Programação OO em Java. Profa Andréa Schwertner Charão DLSC/CT/UFSM Programação OO em Java Profa Andréa Schwertner Charão DLSC/CT/UFSM Sumário Herança Visibilidade de atributos e métodos Extensão e sobreposição Uso de super Referências para objetos Polimorfismo Conceitos

Leia mais

Fundamentos de Orientação à objetos

Fundamentos de Orientação à objetos Fundamentos de Orientação à objetos Prof. Gustavo Willam Pereira ENG10082 Programação II Créditos: Prof. Clayton Vieira Fraga Filho Objeto Um objeto, como um substantivo, pode ser uma pessoa, local ou

Leia mais

INF1636 PROGRAMAÇÃO ORIENTADA A OBJETOS

INF1636 PROGRAMAÇÃO ORIENTADA A OBJETOS INF1636 PROGRAMAÇÃO ORIENTADA A OBJETOS Departamento de Informática PUC-Rio Ivan Mathias Filho ivan@inf.puc-rio.br Programa Capítulo 5 Conversão de Tipos Polimorfismo O Modificador final O Modificador

Leia mais

Laboratório de Programação. Aula 2 Java 5COP088. Aula 2 Java Prof. Dr. Sylvio Barbon Junior. Sylvio Barbon Jr

Laboratório de Programação. Aula 2 Java 5COP088. Aula 2 Java Prof. Dr. Sylvio Barbon Junior. Sylvio Barbon Jr 5COP088 Laboratório de Programação Aula 2 Java Prof. Dr. Sylvio Barbon Junior Sylvio Barbon Jr barbon@uel.br 1 Aula 2 Orientação a Objetos 1) Discussão 2) Encapsulamento 3) Herança 4) Polimorfismo 5) Sobrescrita

Leia mais

Recapitulando. Construtores: (Overload assinatura) public Circle() {...} public Circle(double x, double y, double r) {... }

Recapitulando. Construtores: (Overload assinatura) public Circle() {...} public Circle(double x, double y, double r) {... } Recapitulando Orientação a objetos: programas organizados em torno da definição de classes, instanciação de objetos e troca de mensagens. Declaração de variáveis de referencia: Circle c; Criação/instanciação

Leia mais

Paradigmas de Linguagens de Programação. Suporte para Programação Orientada a Objeto

Paradigmas de Linguagens de Programação. Suporte para Programação Orientada a Objeto Suporte para Programação Orientada a Objeto Cristiano Lehrer Categoria das Linguagens que Suportam POO Suporte a POO acrescentado a uma linguagem já existente: C++ (também suporta programação procedural

Leia mais

Vejamos o seguinte exemplo public class Exemplo private int testada = 20; public void testapalavra(int testada) JOptionPane.showMessageDialog(null,"Pa

Vejamos o seguinte exemplo public class Exemplo private int testada = 20; public void testapalavra(int testada) JOptionPane.showMessageDialog(null,Pa Palavra reservada this Em Java podemos ter um parâmetro de um método e um atributo de uma classe com o mesmo nome. Caso façamos uma referência a esta variável, pelo princípio da localidade estaremos referenciando

Leia mais

Linguagens de Programação Aula 12

Linguagens de Programação Aula 12 Linguagens de Programação Aula 12 Celso Olivete Júnior olivete@fct.unesp.br Na aula passada Implementando subprogramas 2 Na aula de hoje Suporte para a programação orientada a objetos 3 Roteiro Introdução

Leia mais

Herança e Polimorfismo -Parte II -

Herança e Polimorfismo -Parte II - Herança e Polimorfismo -Parte II - Mário Meireles Teixeira mario@deinf.ufma.br A hierarquia do exemplo DoME 2 1 Saída incompleta O que queremos CD: A Swingin' Affair (64 mins)* Frank Sinatra tracks: 16

Leia mais

Modelo do Mundo Real. Abstração. Interpretação

Modelo do Mundo Real. Abstração. Interpretação Modelo do Mundo Real Mundo Real Abstração Interpretação Sistema de Software Modelo Algoritmo Abstração: O modelo precisa capturar apenas as características do mundo real que são importantes para o sistema

Leia mais

Declaração de Construtores em Java

Declaração de Construtores em Java Programando com Java Artigo http://mballem.wordpress.com/ Declaração de Construtores em Java Para que serve e como usar um Construtor em Java Autor Marcio Ballem: é formado em Sistemas de Informação e

Leia mais

Namespaces, Classes e Métodos.

Namespaces, Classes e Métodos. . Linguagem de Programação III Mauro Lopes Carvalho Silva Professor EBTT DAI Departamento Acadêmico de Informática Campus Monte Castelo Instituto Federal de Educação Ciência e Tecnologia do Maranhão Linguagem

Leia mais

Palavras Reservadas da Linguagem Java

Palavras Reservadas da Linguagem Java Palavras Reservadas da Linguagem Java Palavras Reservadas da Linguagem Java: Categorias Tipos de dados primitivos Literais Pseudo-variáveis Desvio e controle de fluxo Pacotes Exceções Modificadores de

Leia mais

Herança Sendo uma linguagem orientada a objetos Java oferece mecanismos para definir classes derivadas a partir de classes existentes; As classes deri

Herança Sendo uma linguagem orientada a objetos Java oferece mecanismos para definir classes derivadas a partir de classes existentes; As classes deri Herança Forma de reutilização de software Encapsular estrutura e comportamento em um tipo não é um conceito exclusivo da orientação a objetos, pois já era usado na programação de tipos abstratos. O que

Leia mais

Programação Orientada a Objectos - P. Prata, P. Fazendeiro. Hierarquia de classes e mecanismo de ligação

Programação Orientada a Objectos - P. Prata, P. Fazendeiro. Hierarquia de classes e mecanismo de ligação 4 Conceito de Herança Hierarquia de classes e mecanismo de ligação Herança Uma classe pode herdar operações de uma superclasse e as suas operações podem ser herdadas por subclasses. O mecanismo de herança

Leia mais

Ex: carro_desportivo poderá ser uma subclasse de automóvel (carro_desportivo é_um automóvel)

Ex: carro_desportivo poderá ser uma subclasse de automóvel (carro_desportivo é_um automóvel) Herança capacidade de uma classe (subclasse) herdar, adquirir atributos e funcionalidades de outra classe (superclasse), podendo juntar algumas especificidades e/ou alterar outras. Existe uma relação tipo

Leia mais

Programação Orientada a Objetos. SANTOS, Rafael (PLT) e Guia de Estudo SCJP. SIERRA, Kathy e BATES, Bert

Programação Orientada a Objetos. SANTOS, Rafael (PLT) e Guia de Estudo SCJP. SIERRA, Kathy e BATES, Bert Programação Orientada a Objetos. SANTOS, Rafael (PLT) e Guia de Estudo SCJP. SIERRA, Kathy e BATES, Bert Há situações em que não deve haver instâncias de determinadas classes Há modelos incompletos que

Leia mais

Java para Desktop. Programação Orientada à Objetos 2 JSE

Java para Desktop. Programação Orientada à Objetos 2 JSE Java para Desktop Programação Orientada à Objetos 2 JSE Encapsulamento significa "ocultar informações, ele define que cada objeto contém todos os detalhes de implementação necessários sobre como ele funciona

Leia mais

Visibilidade e Encapsulamento

Visibilidade e Encapsulamento Visibilidade e Encapsulamento Professor: Ricardo Luis dos Santos IFSUL 2016 Agenda Pacotes Visibilidade Encapsulamento Hands-On 2 Pacotes Em Java, a visibilidade ou grau de acesso a um determinado atributo

Leia mais

Polimorfismo. O que é polimorfismo?

Polimorfismo. O que é polimorfismo? O que é polimorfismo? Polimorfismo Significa que variáveis podem referenciar mais do que um tipo. Não é um conceito novo e várias linguagens de programação aplicam. Funções são polimórficas quando seus

Leia mais

Unidade: Classes Abstratas, Polimorfismo, Sobreposição e Interfaces

Unidade: Classes Abstratas, Polimorfismo, Sobreposição e Interfaces Unidade: Classes Abstratas, Polimorfismo, Sobreposição e Interfaces 0 Unidade: Classes Abstratas, Polimorfismo, Sobreposição e Interfaces Classes Abstratas À medida que você sobe na hierarquia de herança,

Leia mais

Programação Orientada a Objetos

Programação Orientada a Objetos Programação Orientada a Objetos Prof. André Gustavo Duarte de Almeida andre.almeida@ifrn.edu.br www3.ifrn.edu.br/~andrealmeida Aula VIII Herança e Interface Roteiro Herança Classes Abstratas Interface

Leia mais

Introdução à Programação. Encapsulamento e Herança

Introdução à Programação. Encapsulamento e Herança Introdução à Programação Encapsulamento e Herança Tópicos da Aula Hoje, aprenderemos conceitos mais avançados de Orientação a Objetos Encapsulamento Usando modificadores de acesso em C++ Herança Importância

Leia mais

Polimorfismo: aprendendo a prever o futuro. Polimorfismo: aprendendo a prever o futuro. Definições (2/5) Definições Tipos de Polimorfismo

Polimorfismo: aprendendo a prever o futuro. Polimorfismo: aprendendo a prever o futuro. Definições (2/5) Definições Tipos de Polimorfismo Polimorfismo: aprendendo a prever o futuro BSI Bacharelado em Sistemas de Informação LOO Linguagens Orientadas a Objetos Sumário Definições Tipos de Polimorfismo Dicas para o Polimorfismo Eficaz Armadilhas

Leia mais

Desenvolvimento de Aplicações Desktop

Desenvolvimento de Aplicações Desktop Desenvolvimento de Aplicações Desktop Conceitos Básicos de POO Professor: Charles Leite Motivação Na Programação OO, um OBJETO é considerado a entidade central de um programa Assim, o desenvolvimento de

Leia mais

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

Programação Orientada a Objetos. Aula 1.9 this e static. Prof. Bruno Moreno Programação Orientada a Objetos Aula 1.9 this e static Prof. Bruno Moreno bruno.moreno@ifrn.edu.br Relembre: Clase RoboSimples Os métodos move() e move(int passos) podem ser reescrito sem redundância de

Leia mais

Computação II Orientação a Objetos

Computação II Orientação a Objetos Computação II Orientação a Objetos Fabio Mascarenhas - 2016.2 http://www.dcc.ufrj.br/~fabiom/java Revisão Classes e Objetos Classes são uma das unidades básicas de um programa Java Usamos as classes para

Leia mais

Orientação a Objetos Parte I. Introdução a POO (Programação Orientada a Objetos)

Orientação a Objetos Parte I. Introdução a POO (Programação Orientada a Objetos) Orientação a Objetos Parte I Introdução a POO (Programação Orientada a Objetos) Histórico Gerações de Linguagens de Programação Primeira Geração: Linguagem de máquina Segunda Geração: Linguagem de montagem

Leia mais

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

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 À ORIENTAÇÃO A OBJETOS COM JAVA - MÓDULO II Classes e Objetos Objetos Um conjunto de estados e comportamentos Classes Um modelo para a criação de objetos 1 Pacotes e Java API Pacotes Um conjunto

Leia mais

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

Programação I Curso: Sistemas de Informação. Prof.: José Ronaldo Leles Júnior  .: Programação I Curso: Sistemas de Informação Prof.: José Ronaldo Leles Júnior Email.: juniorleles80@gmail.com 1º semestre - 2017 POO Paradigma Orientado a Objetos O que é um Paradigma? É um ponto de vista

Leia mais

Programação Orientada a Objetos Flávio de Oliveira Silva 144

Programação Orientada a Objetos Flávio de Oliveira Silva 144 HERANÇA Herança é a capacidade de uma subclasse de ter acesso as propriedades da superclasse(também chamada classe base) relacionada a esta subclasse. Dessa forma os atributos e métodos de uma classe são

Leia mais

Instituto de Informática Estrutura de Dados II

Instituto de Informática Estrutura de Dados II Instituto de Informática Estrutura de Dados II Revisão de Métodos em Classes Aplicada a Estrutura de Dados Básicas 20/08/2018 Profa. Lucília Gomes Ribeiro Prof. Dirson S Campos Programação em Java q O

Leia mais

Computação II - Java - Teste 1.2 Prof. Adriano Joaquim de Oliveira Cruz 2015/04/27

Computação II - Java - Teste 1.2 Prof. Adriano Joaquim de Oliveira Cruz 2015/04/27 1. Defina os sequintes termos: (a) (1 Ponto) Polimorfismo Computação II - Java - Teste 1.2 Prof. Adriano Joaquim de Oliveira Cruz 2015/04/27 (b) (1 Ponto) Sobrescrita de funções (c) (1 Ponto) Sobrecarga

Leia mais

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

Esta categoria mais geral, à qual cada objeto pertence, denominamos de classe; IFSC/POO + JAVA - prof. Herval Daminelli Esta categoria mais geral, à qual cada objeto pertence, denominamos de classe; Tudo no mundo real pode ser representado por meio do conceito de "objeto": uma planta, uma mesa, uma pessoa, um sentimento,

Leia mais

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

Classes o Objetos. Classes, objetos, métodos e variáveis de instância Classes o Objetos Um recurso comum de cada aplicativo feito até agora é que todas as instruções que realizavam tarefas localizavam-se no método main. Se você tornar parte de uma equipe de desenvolvimento

Leia mais

Linguagem de Programação II Implementação

Linguagem de Programação II Implementação Linguagem de Programação II Implementação Prof. Alessandro Borges 2 Tópicos Implementação em Java Variáveis Palavras reservadas Pacotes Identificador this Acessando membros de outros objetos API Java Nossa

Leia mais

Entender o princípio do Polimorfismo; Conhecer Polimorfismo de Sobreposição e de Inclusão;

Entender o princípio do Polimorfismo; Conhecer Polimorfismo de Sobreposição e de Inclusão; POLIMORFISMO POLIMORFISMO É o último princípio que serve de base para a Programação Orientada a Objeto. Esse princípio também aposta na ideia da reutilização para facilitar o dia a dia da programação.

Leia mais

Aula 7 POO 1 Herança. Profa. Elaine Faria UFU

Aula 7 POO 1 Herança. Profa. Elaine Faria UFU Aula 7 POO 1 Herança Profa. Elaine Faria UFU - 2019 Problema Problema As classes Funcionário e Estudante compartilham alguns atributos, mas não todos Não é possível utilizar uma classe para representar

Leia mais

Televisao tamanho tela emitirsom. conectarperifericos

Televisao tamanho tela emitirsom. conectarperifericos 1 - Introdução a Programação Orientada a Objeto Para tentar solucionar o problema do baixo reaproveitamento de código, surgiu a idéia da Programação Orientada a Objeto (POO). A POO não é nova, sua formulação

Leia mais

Polimorfismo. PARTE II: Java e OO. Polimorfismo. Polimorfismo. Polimorfismo. Polimorfismo

Polimorfismo. PARTE II: Java e OO. Polimorfismo. Polimorfismo. Polimorfismo. Polimorfismo PARTE II: Java e OO Interface Herança Herança e polimorfismo Classes e métodos abstratos : muitas formas de implementação de uma operação Permite esconder diferentes implementações atrás da mesma interface

Leia mais

Herança (parte 2) Redefinição de métodos AULA 11

Herança (parte 2) Redefinição de métodos AULA 11 Introdução a Programação IF669 http://www.cin.ufpe.br/~if669 Herança (parte 2) Redefinição de métodos AULA 11 Ricardo Massa F. Lima rmfl@cin.ufpe.br Sérgio C. B. Soares scbs@cin.ufpe.br Na aula passada

Leia mais

[Linguagem de Programação 3] [Aula 01] [Gustavo Yoshio Maruyama]

[Linguagem de Programação 3] [Aula 01] [Gustavo Yoshio Maruyama] [Linguagem de Programação 3] [Aula 01] [Gustavo Yoshio Maruyama] Objetivos Revisar conceitos de Orientação a Objetos Classes Objetos Encapsulamento Herança Sobrescrita de métodos Sobrecarga de métodos

Leia mais

Classe Abstrata e Interface

Classe Abstrata e Interface Orientação a objetos com Java Classe Abstrata e Interface Byron Leite byron.leite@gmail.com 1 Herança Agenda Geral Parte 04 Encapsulamento Pacotes Modificadores de Acesso private, default, protected, public

Leia mais

Interfaces e Classes Abstratas

Interfaces e Classes Abstratas Interfaces e Classes Abstratas José Gustavo de Souza Paiva Problema Método obterarea()? Classes Abstratas Classes que funcionam como um molde Declarada com comando abstract Contém um ou mais métodos abstratos

Leia mais

Auto-Referenciamento e Herança

Auto-Referenciamento e Herança Auto-Referenciamento e Herança José Gustavo de Souza Paiva Auto-Referenciamento Ao criarmos o código de uma classe, ainda não sabemos quais serão seus objetos, e por isso não há como referenciá-los Utilizando

Leia mais

Aula 9 POO 1 Polimorfismo. Profa. Elaine Faria UFU

Aula 9 POO 1 Polimorfismo. Profa. Elaine Faria UFU Aula 9 POO 1 Polimorfismo Profa. Elaine Faria UFU - 2019 Sobrecarga de Métodos Numa mesma classe, dois ou mais métodos podem ter o mesmo nome Desde que tenham tipos, quantidade e/ou ordem de parâmetros

Leia mais

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

Introdução a classes e objetos. Prof. Marcelo Roberto Zorzan Prof a. Rachel Reis Introdução a classes e objetos Prof. Marcelo Roberto Zorzan Prof a. Rachel Reis Estruturas de Seleção if... else Operador condicional (? : ) switch Aula de Hoje Estruturas de Repetição: while/do... while/for

Leia mais

Computação II Orientação a Objetos

Computação II Orientação a Objetos Computação II Orientação a Objetos Fabio Mascarenhas - 2016.2 http://www.dcc.ufrj.br/~fabiom/java Classes abstratas Até agora, usamos interfaces toda vez que queríamos representar algum conceito abstrato

Leia mais