Linguagens de Programação Aula 12

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

Download "Linguagens de Programação Aula 12"

Transcrição

1 Linguagens de Programação Aula 12 Celso Olivete Júnior

2 Na aula passada Implementando subprogramas 2

3 Na aula de hoje Suporte para a programação orientada a objetos 3

4 Roteiro Introdução Programação orientada a objetos Questões de projeto para programação orientada a objetos Suporte para programação orientada a objetos em C++ Suporte para programação orientada a objetos em Java Implementação de construções orientadas a objetos 4

5 Introdução Muitas linguagens de programação orientadas a objeto Algumas suportam programação procedural e orientada a objetos (por exemplo, Ada 95 e C++) Linguagens mais novas não suportam outros paradigmas, mas usam suas estruturas imperativas (por exemplo, Java e C#) Algumas são linguagens de programação orientadas a objetos puras (por exemplo, Smalltalk e Ruby) 5

6 Programação orientada a objeto Uma linguagem orientada a objetos deve fornecer suporte aos três recursos chave de linguagem: 1. Tipos de dados abstratos Inclui apenas a representação de dados de um tipo de dados específico e os subprogramas que fornecem as operações para esse tipo. Exemplo: classe 2. Herança Herança é o tema central da programação orientada a objetos e das linguagens que a suportam 3. Vinculação dinâmica de chamadas a métodos Polimorfismo 6

7 Evolução do paradigma Procedural 1950 a 1970: Abstração procedural. Orientada a dados início dos anos 80: Orientada a dados. POO final dos anos 80: Herança e binding dinâmico. 7

8 Origem da herança anos 80 Aumento de produtividade pode ocorrer com o reuso Tipos de dados abstratos são difíceis de reusar sempre precisam de mudanças Definições de tipos de dados abstratos são todas independentes e no mesmo nível Herança permite novas classes definidas nos termos das já existentes 8

9 Conceitos de orientação a objetos Tipos de dados abstratos são geralmente chamados de classes Instâncias de classes são objetos 9

10 Conceitos de orientação a objetos Uma classe derivada por meio de herança de outra classe é uma classe derivada ou uma subclasse A classe da qual a nova classe é derivada é sua classe pai ou superclasse 10

11 Conceitos de orientação a objetos Subprogramas que definem as operações em objetos de uma classe são chamados de métodos 11

12 Conceitos de orientação a objetos (cont...) Chamadas aos métodos são mensagens Ex: objpessoa.registrar(); A coleção completa de métodos de um objeto é chamada de protocolo de mensagens ou interface de mensagens Mensagens têm duas partes: objeto e um nome de método Se uma nova classe é uma subclasse de uma única classe pai, então o processo de derivação é chamado de herança simples 12

13 Conceitos de orientação a objetos (cont...) A herança pode ser complicada por controles de acesso às entidades encapsuladas Uma classe pode esconder entidades de suas subclasses Uma classe pode esconder entidades de seus clientes Uma classe também pode ocultar entidades para seus clientes, mas permitir às suas subclasses vê-los Uma classe pode modificar um método herdado O novo método sobrescreve o método herdado Este, então, é chamado de método sobrescrito 13

14 Conceitos de orientação a objetos (cont...) Há dois tipos de variáveis: Variáveis de classe Variáveis de instância Há dois tipos de métodos: Métodos de classe Métodos de instância 14

15 Conceitos de orientação a objetos (cont...) Herança simples herança múltipla Uma desvantagem da herança como uma forma de aumentar a possibilidade de reuso é que ela cria dependências entre classes em uma hierarquia 15

16 Vinculação dinâmica Terceiro recurso chave de uma LP: polimorfismo Uma variável polimórfica pode ser definida em uma classe que é capaz de referenciar (ou apontar) os objetos da classe e objetos de qualquer dos seus descendentes O Polimorfismo permite que diferentes objetos (avião, barco, automóvel) respondam uma mesma mensagem (mover) de formas diferentes (voar, navegar e correr). 16

17 Vinculação dinâmica Terceiro recurso chave de uma LP: polimorfismo Quando uma hierarquia de classe inclui as classes que sobrescrevem métodos e esses métodos são chamados por uma variável polimórfica, a ligação para o método correto será dinâmica O Polimorfismo permite que diferentes objetos (avião, barco, automóvel) respondam uma mesma mensagem (mover) de formas diferentes (voar, navegar e correr). 17

18 Conceitos de vinculação dinâmica Um método abstrato é um que não inclui uma definição (apenas define um protocolo) Subprograma sem o corpo Subclasse que herdar esse método abstrato é a responsável por definir o corpo Uma classe abstrata inclui pelo menos um método virtual. Um classe abstrata não pode ser instanciada Uma classe abstrata serve de molde para outras classes Geralmente apresenta métodos incompletos, o que pode ser sobrescrito na classe filha 18

19 Exemplo de classe abstrata Java public abstract class Funcionario { public string Nome; public decimal Salario; public abstract void Reajustar();... public class Programador extends Funcionario { public void Reajustar() //implementação o método abstrato { Salario += 1000; 19

20 Objetivos da vinculação dinâmica Permitir que os sistemas de software sejam melhor entendidos durante o desenvolvimento e a manutenção. 20

21 Questões de projeto 1. A exclusividade dos objetos 2. As subclasses são subtipos? 3. Verificação de tipos e polimorfismo 4. Herança simples e múltipla 5. Alocação e liberação de objetos 6. Vinculação estática e dinâmica 7. Classes aninhadas 8. Inicialização de objetos 21

22 1. A exclusividade dos objetos Tudo é um objeto Vantagem - elegância e pureza Desvantagem - operações lentas para objetos simples (troca de mensagens) 22

23 2. As subclasses são subtipos? Um relacionamento é-um(a) se mantém entre uma classe derivada e sua classe pai? Se uma classe derivada é um(a) classe pai, então os objetos da classe derivada devem expor todos os membros que são expostos por objetos da classe pai Uma classe derivada é um subtipo se tiver um relacionamento é-um(a) com sua classe pai Os métodos da subclasse que sobrescrevem métodos da classe pai devem ser compatíveis em relação ao tipo com seus métodos sobrescritos correspondentes 23

24 3. Verificação de tipos e polimorfismo O polimorfismo pode exigir uma verificação de tipo dinâmico de parâmetros e o valor de retorno Verificação de tipos dinâmica custa tempo de execução e posterga a detecção de erros de tipo Se o método sobrescrevedor tiver o mesmo número de tipos de parâmetros e de retorno do que o método sobrescrito, a verificação pode ser estática 24

25 4. Herança simples e múltipla Herança múltipla permite uma nova classe herdar de duas ou mais classes Desvantagens de herança múltipla: Complexidade de linguagem e implementação Potencial ineficiência Vantagem: Às vezes, é bastante conveniente 25

26 5. Alocação e liberação de objetos Local onde os objetos são alocados? Se eles se comportam como tipos de dados abstratos, então talvez eles possam ser Código Dados Estáticos Heap alocados de qualquer lugar Alocados da pilha de tempo de execução Explicitamente criados no monte com Pilha um operador ou função, como new 26

27 5. Alocação e liberação de objetos Local onde os objetos são alocados? Se eles são todos dinâmicos do monte, existe a vantagem de ter um método de criação e acesso uniforme por meio de ponteiros ou variáveis de referência Código Dados Estáticos Heap Se os objetos são dinâmicos da pilha, existe um problema relacionado aos subtipos. Exemplo: se a classe B é filha da classe A e B é um subtipo de A, um objeto do tipo B pode ser atribuído a variável Pilha do tipo A. A liberação é explícita ou implícita? 27

28 6. Vinculação estática e dinâmica Todas as vinculações de mensagens a métodos são dinâmicas? Todas as mensagens para métodos deveriam ser dinâmicas 28

29 7. Classes aninhadas Se uma nova classe é necessária em apenas uma classe, não há razão para defini-la de forma que possa ser vista por outras classes Pode a nova classe ser aninhada dentro da classe que a usa? Em alguns casos, a nova classe está aninhada em um subprograma, em vez de em outra classe Questões de projeto: Quais recursos da classe aninhadora são visíveis para a classe aninhada e vice-versa? 29

30 7. Classes aninhadas Exemplo Definição: classes internas (aninhadas) são classes dentro de classes. Vantagens: agrupar classes que são usadas somente em um lugar. aumenta o encapsulamento. classes aninhadas podem tornar o código mais legível e fácil de consertar. class Aninhadora{... class Aninhada{... 30

31 7. Classes aninhadas Uma classe aninhada é um membro que está envolvendo uma classe e, como tal, tem acesso a outros membros da classe envolvida, mesmo que eles sejam declarados privados aumenta o encapsulamento class Aninhadora{... static class AninhadaEstatica {... class AninhadaNaoEstatica {... 31

32 7. Classes aninhadas São divididas em duas categorias: estáticas e não estáticas Classes aninhadas que são declaradas static são simplesmente chamadas static nested classes (classes aninhadas estáticas). Classes aninhadas não estáticas são chamadas inner classes (classes internas). class Aninhadora{... static class AninhadaEstatica {... class AninhadaNaoEstatica {... 32

33 7. Classes aninhadas estáticas Classes aninhadas estáticas são acessadas usando o nome da classe envolvida: Aninhadora.AninhadaEstatica class Aninhadora{... static class AninhadaEstatica {... class AninhadaNaoEstatica {... 33

34 7. Classes aninhadas estáticas Para criar um objeto para a classe aninhada estática Aninhadora.AninhadaEstatica objaninhado = new Aninhadora.AninhadaEstatica(); class Aninhadora{... static class AninhadaEstatica {... class AninhadaNaoEstatica {... 34

35 8. Inicialização de objetos Quando um objeto de uma subclasse é criado, a inicialização associada do membro herdado da classe pai é implícita ou o programador deve lidar explicitamente com ela? 35

36 Suporte para programação orientada a objetos em C++ Características gerais: Evolui de C e SIMULA 67 Está entre as linguagens de programação orientadas a objeto mais usadas Sistema de tipos misto Construtores e destrutores Elabora os controles de acesso para entidades de classe 36

37 Suporte para programação orientada a objetos em C++ Herança Uma classe não precisa ser a subclasse de alguma classe Controles de acesso aos membros podem ser private (visível apenas na classe e amigos ). public (visível nas subclasses e clientes). protected (visível na classe a nas subclasses). 37

38 Suporte para programação orientada a objetos em C++ Adicionalmente, o processo de subclasses pode ser declarado com controles de acesso (privado ou público), que define potenciais mudanças no acesso a subclasses Derivação privada herança pública e membros protegidos são privados nas subclasses Derivação pública membros protegidos são também públicos e protegidos nas subclasses 38

39 Suporte para programação orientada a objetos em C++ Exemplo class classe1 { private: int a; float x; protected: int b; float y; public: int c: float z; ; class subclasse1: public classe1 {... b e y: protegidos c e z: públicos a e x: inalcançáveis class subclasse2: private classe1 {... b, c, y e z: privados a e x: inalcançáveis 39

40 Reexportação em C++ Um membro que não é acessível em uma subclasse (por causa da derivação privada) pode ser declarado para ser visível usando um operador de resolução de escopo (::), por exemplo, class classe1 { private: int a; float x; protected: int b; float y; public: int c: float z; ; Instâncias de subclasse3 podem acessar c class subclasse3: private classe1 { classe1 :: c; //c passa ser público Operador de resolução de escopo especifica a classe onde a entidade seguinte é definida 40

41 Reexportação (cont...) Uma motivação para usar derivação privada Uma classe fornece membros que devem ser visíveis, então eles são definidos para serem membros públicos. Uma classe derivada adiciona alguns novos membros, mas não quer que seus clientes vejam os membros da classe pai, mesmo que tivessem de ser públicos na definição da classe pai 41

42 Suporte para programação orientada a objetos em C++ (cont...) Herança múltipla é suportada Se houver dois membros herdados com o mesmo nome, ambos podem ser referenciados usando o operador de resolução de escopo 42

43 Suporte para programação orientada a objetos em C++ (cont...) Vinculação dinâmica Um método pode ser definido para ser virtual, o que significa que pode ser chamado por meio de variáveis polimórficas e vinculação dinâmica a mensagens Um função virtual pura não tem corpo e não pode ser chamada Qualquer classe que inclua uma função virtual pura é uma classe abstrata 43

44 Suporte para programação orientada a objetos em C++ (cont...) Avaliação C++ fornece herança múltipla Em C++, o programador deve decidir em tempo de design que métodos serão estaticamente vinculados e que deve ser dinamicamente vinculado Vinculação estática é mais rápida! 44

45 Suporte para programação orientada a objetos em Java O projeto de classes, herança e métodos em Java é similar ao de C++ Características gerais Todos os dados são objetos, exceto valores dos tipos primitivos escalares Todos os objetos em Java são dinâmicos do monte explícitos. A maioria é alocada com o operador new, mas não existe um operador de liberação explícito Um método finalize é implicitamente chamado quando o coletor de lixo está prestes a recuperar o armazenamento ocupado pelo objeto 45

46 Suporte para programação orientada a objetos em Java (cont...) Herança Java suporta diretamente apenas herança simples, mas um tipo de classe abstrata, chamada de interface, fornece suporte parcial para herança múltipla 46

47 Suporte para programação orientada a objetos em Java (cont...) Interface algumas propriedades: a) Não pode ser instanciável (não pode criar objetos com new) b) Só pode possuir assinaturas de métodos de instância, públicos e abstratos (sem corpo).não pode possuir métodos concretos (com corpo), nem métodos estáticos. c) Não pode conter variáveis de instância ou de classe (static); d) Pode conter declarações de constantes (com prefixo final e inicializadas para um valor) nesse caso essa variável funcionará como uma constante de classe. e) Pode ser criada como subinterface de outra interface já existente, usando extends, como as classes. 47

48 Suporte para programação orientada a objetos em Java (cont...) Exemplo de interface public interface InterfaceExemplo{ public final String PALAVRA = TESTE ; public void metodo1(int x); public String metodo2 (String s); public interface InterfaceExemplo2 extends InterfaceExemplo{ public void metodo3(); Subinterface da primeira extensão Herda as definições da superinterface 48

49 Suporte para programação orientada a objetos em Java (cont...) Dynamic Binding Em Java, todas as chamadas a métodos são dinamicamente vinculadas a menos que o método chamado tenha sido declarado como final A vinculação estática é usada também se o método for estático (static) ou privado (private), em que ambos os modificadores não permitem sobrescrita 49

50 Suporte para programação orientada a objetos em Java (cont...) Diversas variedades de classes aninhadas Todas possuem a vantagem de serem ocultas de todas as classes em seus pacotes, exceto para a classe aninhadora Classes não estáticas aninhadas diretamente em outras são classes internas Classes aninhadas podem ser anônimas Uma classe aninhada local é definida em um método de sua classe aninhadora 50

51 Suporte para programação orientada a objetos em Java (cont...) Avaliação O projeto de Java para suporte à programação orientada a objetos é similar ao de C++ Java não suporta programação procedural Não permite classes sem pais Usa vinculação dinâmica como a maneira normal de vincular chamadas a métodos às definições de métodos Usa interfaces para fornecer uma forma simples de suporte para herança múltipla 51

52 Implementação de construções orientadas a objetos Duas partes interessantes e desafiadoras Estruturas de armazenamento para variáveis de instância Vinculações dinâmicas de mensagens a métodos 52

53 Armazenamento de dados de instâncias Registro de instância de classe (RIC) armazena o estado de um objeto Estático (construído em tempo de compilação) Cada classe possui seu próprio RIC. Quando uma derivação ocorre, o RIC da subclasse é uma cópia do RIC da superclasse, com entradas para as novas variáveis de instância adicionadas no final Dado que a estrutura do RIC é estática, o acesso a todas as variáveis de instância pode ser feita como é feito nos registros (deslocamento local) Eficiente 53

54 Armazenamento de dados de instâncias Exemplo class Pequena { public int a,b,c; class Grande extends Pequena { public int d,e; Cada classe possui seu próprio RIC. a b c RIC de Pequena 54

55 Armazenamento de dados de instâncias Exemplo class Pequena { public int a,b,c; class Grande extends Pequena { public int d,e; Cada classe possui seu próprio RIC. a b c RIC de Pequena 55

56 Armazenamento de dados de instâncias Exemplo class Pequena { public int a,b,c; class Grande extends Pequena { public int d,e; Cada classe possui seu próprio RIC. Quando uma derivação ocorre, o RIC da subclasse é uma cópia do RIC da superclasse, com entradas para as novas variáveis de instância adicionadas no final a b c a b c d e RIC de Pequena RIC de Grande 56

57 Vinculação dinâmica de chamadas a métodos Métodos em uma classe que são estaticamente vinculados não precisam se envolver no RIC para a classe Métodos que serão vinculados dinamicamente devem ter entradas nessa estrutura Chamadas a um método podem então ser conectadas ao código correspondente por meio desse ponteiro no RIC A estrutura de armazenamento para a lista é frequentemente chamada de uma tabela de métodos virtual (vtable) As chamadas a métodos podem ser representadas como deslocamentos a partir do início da vtable 57

58 Vinculação dinâmica de chamadas a métodos Exemplo class Pequena { public int a,b,c; public void desenhar( ) {... a b c vtable class Grande extends Pequena { public int d,e; public void desenhar( ) {... public void examinar( ) {... 58

59 Vinculação dinâmica de chamadas a métodos Exemplo class Pequena { public int a,b,c; public void desenhar( ) {... class Grande extends Pequena { public int d,e; public void desenhar( ) {... public void examinar( ) {... a b c vtable de Pequena vtable desenhar( ) 59

60 Vinculação dinâmica de chamadas a métodos Exemplo class Pequena { public int a,b,c; public void desenhar( ) {... class Grande extends Pequena { public int d,e; public void desenhar( ) {... public void examinar( ) {... a b c vtable de Pequena vtable desenhar( ) a b c vtable d e 60

61 Vinculação dinâmica de chamadas a métodos Exemplo class Pequena { public int a,b,c; public void desenhar( ) {... class Grande extends Pequena { public int d,e; public void desenhar( ) {... public void examinar( ) {... a b c vtable de Pequena vtable desenhar( ) a b c vtable desenhar( ) //grande - sobrescreve d e examinar( ) vtable de Grande 61

62 Vinculação dinâmica de chamadas a métodos Exemplo class Pequena { public int a,b,c; public void desenhar( ) {... class Grande extends Pequena { public int d,e; public void desenhar( ) {... public void examinar( ) {... a b c vtable de Pequena vtable desenhar( ) a b c vtable desenhar( ) //grande - sobrescreve d e examinar( ) CHAMADA POLIMÓRFICA objeto.desenhar( ); vtable de Grande As chamadas a métodos podem ser representadas como deslocamentos a partir do início da vtable 62

63 Vinculação dinâmica de chamadas a métodos Exemplo class Pequena { public int a,b,c; public void desenhar( ) {... class Grande extends Pequena { public int d,e; public void desenhar( ) {... Instância de Pequena public void examinar( ) {... a b c vtable de Pequena vtable desenhar( ) a b c vtable desenhar( ) //grande - sobrescreve d e examinar( ) CHAMADA POLIMÓRFICA objeto.desenhar( ); vtable de Grande As chamadas a métodos podem ser representadas como deslocamentos a partir do início da vtable 63

64 Vinculação dinâmica de chamadas a métodos Exemplo class Pequena { public int a,b,c; public void desenhar( ) {... class Grande extends Pequena { public int d,e; public void desenhar( ) {... public void examinar( ) {... CHAMADA POLIMÓRFICA objeto.desenhar( ); Instância de Grande a b c vtable de Pequena vtable desenhar( ) a b c vtable desenhar( ) //grande - sobrescreve d e examinar( ) vtable de Grande As chamadas a métodos podem ser representadas como deslocamentos a partir do início da vtable 64

65 Resumo A programação orientada a objetos envolve três conceitos fundamentais: tipos de dados, abstratos, herança e vinculação dinâmica Questões de projeto: exclusividade de objetos, subclasses e subtipos, verificação de tipo e polimorfismo, herança simples e múltipla, vinculação dinâmica, liberação explícita ou implícita de objetos e classes aninhadas C++ tem dois sistemas de tipos (híbrida) 65

66 Resumo Java não é uma linguagem híbrida como C++; suporta apenas programação orientada a objetos Implementar linguagens de programação orientada a objetos envolve novas estruturas de dados 66

67 Exercício Implemente uma classe que contenha duas classes aninhadas (uma estática e uma interna) em C++ e Java Faça um exemplo de herança múltipla em C++ Faça um exemplo de interface (Java) 67

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

Suporte a programação orientada a objetos

Suporte a programação orientada a objetos Suporte a programação orientada a objetos Marco A L Barbosa malbarbo.pro.br Departamento de Informática Universidade Estadual de Maringá cba Este trabalho está licenciado com uma Licença Creative Commons

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

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

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

Paradigmas de Linguagens de Programação. Tipos de Dados Abstratos

Paradigmas de Linguagens de Programação. Tipos de Dados Abstratos Tipos de Dados Abstratos Cristiano Lehrer Conceito de Abstração O conceito de abstração é fundamental em programação. Quase todas as linguagens suportam abstração de processos, através de subprogramas:

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

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

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

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

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

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

3.4. Programação Orientada a Objetos

3.4. Programação Orientada a Objetos Paradigmas de Linguagens I 1 3.4. Programação Orientada a Objetos Os conceitos de objetos e classes, vistos nas seções anteriores, são fundamentais na programação orientada a objetos. Complementando a

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

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

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 orientada a objetos

Programação orientada a objetos Programação orientada a objetos Neste capítulo: conceitos-chave que caracterizam as linguagens de programação orientadas a objetos; pragmática da programação orientada a objetos; o projeto de duas importantes

Leia mais

AULA 8 Polimorfismo de: coerção, overloading, inclusão e paramétrico Prof. Dr. Fernando Henrique Campos

AULA 8 Polimorfismo de: coerção, overloading, inclusão e paramétrico Prof. Dr. Fernando Henrique Campos Câmpus Santa Helena Curso: Ciência da Computação Disciplina: Programação Orientada a Objetos AULA 8 Polimorfismo de: coerção, overloading, inclusão e paramétrico Prof. Dr. Fernando Henrique Campos Tema

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

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

Capítulo 5. Nomes, Vinculações e Escopos

Capítulo 5. Nomes, Vinculações e Escopos Capítulo 5 Nomes, Vinculações e Escopos Tópicos do Capítulo 5 Introdução Nomes Variáveis O conceito de vinculação Escopo Escopo e tempo de vida Ambientes de referenciamento Constantes nomeadas Introdução

Leia mais

Linguagens de Programação Aula 11

Linguagens de Programação Aula 11 Linguagens de Programação Aula 11 Celso Olivete Júnior olivete@fct.unesp.br Na aula passada Uma definição de subprograma descreve as ações representadas pelo subprograma Subprogramas podem ser funções

Leia mais

Programação Orientada a Objetos para Redes de Computadores. Polimorfismo com Hierarquias de Herança. Exemplo: Hierarquia Animal

Programação Orientada a Objetos para Redes de Computadores. Polimorfismo com Hierarquias de Herança. Exemplo: Hierarquia Animal 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++ - Polimorfismo Polimorfismo com Hierarquias de Herança

Leia mais

POO29004 Programação Orientada a Objetos

POO29004 Programação Orientada a Objetos POO29004 Programação Orientada a Objetos Herança Prof. Emerson Ribeiro de Mello Instituto Federal de Santa Catarina IFSC campus São José mello@ifsc.edu.br http://docente.ifsc.edu.br/mello/poo 11 de setembro

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 Abstração - Encapsulamento

Linguagem de Programação Orientada a Objeto Abstração - Encapsulamento Linguagem de Programação Orientada a Objeto Abstração - Encapsulamento Professora Sheila Cáceres Variáveis locais Campos são um tipo de variável. Eles: armazenam valores por toda a vida de um objeto; e

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

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

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

O PARADIGMA ORIENTADO POR OBJETOS

O PARADIGMA ORIENTADO POR OBJETOS O PARADIGMA ORIENTADO POR OBJETOS A idéia básica do paradigma orientado a objetos é imaginar que programas simulam o mundo real: um mundo povoado de objetos. Dessa maneira, linguagens baseadas nos conceitos

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

Linguagem de Programação I Apresentação da Disciplina

Linguagem de Programação I Apresentação da Disciplina Linguagem de Programação I Apresentação da Disciplina Apresentação da Disciplina Conteúdo: 1) Orientação a Objetos - Características da OO - Reutilização de código 2) Introdução à Linguagem Java - Histórico

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

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

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

Capítulo 9. Subprogramas

Capítulo 9. Subprogramas Capítulo 9 Subprogramas Introdução Dois recursos fundamentais de abstração Abstração de processos Desde o início da história das linguagens de programação Abstração de dados Desde o início dos anos 1980

Leia mais

Programação Orientada a Objetos

Programação Orientada a Objetos Curso Profissional de Gestão e Programação de Sistemas Informáticos Disciplina: Programação e Sistemas de Informação Programação Orientada a Objetos Módulos 9/10/11 POO 2016/2017 História A OO surgiu no

Leia mais

UNIVERSIDADE FEDERAL DE MATO GROSSO DO SUL SISTEMAS DE INFORMAÇÃO - CÂMPUS DE COXIM FUNDAMENTOS EM ORIENTAÇÃO A OBJETOS

UNIVERSIDADE FEDERAL DE MATO GROSSO DO SUL SISTEMAS DE INFORMAÇÃO - CÂMPUS DE COXIM FUNDAMENTOS EM ORIENTAÇÃO A OBJETOS Data final de entrega 16/09/2014, até às 23h59min Enviar o arquivo de respostas em formato PDF e o arquivozip com códigos fontes para o e-mail motafernandomaia@gmailcom, insira no assunto do e-mail [Lista

Leia mais

Capítulo 2. Orientação a Objetos

Capítulo 2. Orientação a Objetos Capítulo 2 Orientação a Objetos Princípios da Orientação a Objetos Os princípios da orientação a objetos afetam todo o processo de desenvolvimento de software: Seres humanos pensam em termos de substantivos

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

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

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

Herança. Herança. Herança. Herança. Herança. Programação Orientada a Objetos e Ligação Dinâmica Programação Orientada a Objetos e Polimorfismo A é a contribuição original do paradigma de programação orientado a objetos Fundamentos chave do paradigma OO: Abstração de Dados A herança

Leia mais

UNIVERSIDADE PAULISTA - UNIP ICET INSTITUTO DE CIÊNCIAS EXATAS E TECNOLÓGIA

UNIVERSIDADE PAULISTA - UNIP ICET INSTITUTO DE CIÊNCIAS EXATAS E TECNOLÓGIA LPOO - Linguagem de Programação Orientada a Objetos Prof. Msc. Célio R. Castelano Página 1 de 7 Curso Ciência da Computação Professor Célio Ricardo Castelano UNIVERSIDADE PAULISTA - UNIP ICET INSTITUTO

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

Prof. Vicente Paulo de Camargo UML - INTRODUÇÃO UML = Unified Modeling Language = linguagem de modelagem de sistemas Permite especificar, visualizar e documentar modelos de software orientados a objetos

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

Nomes, vinculações e escopos

Nomes, vinculações e escopos Nomes, vinculações e escopos Marco A L Barbosa malbarbo.pro.br Departamento de Informática Universidade Estadual de Maringá cba Este trabalho está licenciado com uma Licença Creative Commons - Atribuição-CompartilhaIgual

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

Java First-Tier: Aplicações. Herança: Simples Múltipla. Orientação a Objetos em Java (III) Problemas de Herança Múltipla.

Java First-Tier: Aplicações. Herança: Simples Múltipla. Orientação a Objetos em Java (III) Problemas de Herança Múltipla. Java First-Tier: plicações Orientação a Objetos em Java (III) Grupo de Linguagens de Programação Departamento de Informática PUC-Rio Herança: Simples Múltipla O tipo de herança que usamos até agora é chamado

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

Nomes, vinculações e escopos

Nomes, vinculações e escopos Nomes, vinculações e escopos Marco A L Barbosa malbarbo.pro.br Departamento de Informática Universidade Estadual de Maringá cba Este trabalho está licenciado com uma Licença Creative Commons - Atribuição-CompartilhaIgual

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

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

E N C A P S U L A M E N T O P R O F. M E. H É L I O E S P E R I D I Ã O

E N C A P S U L A M E N T O P R O F. M E. H É L I O E S P E R I D I Ã O E N C A P S U L A M E N T O P R O F. M E. H É L I O E S P E R I D I Ã O REVIEW CLASSES E INSTÂNCIAS. REVIEW - O OPERADOR THIS This faz referencia a métodos e atributos da própria classe REVIEW - EXEMPLO

Leia mais

Paradigmas de Programação

Paradigmas de Programação Paradigmas de Programação Aula 6 Nomes, Vinculações, Verificação de Tipos e Escopos Prof.: Edilberto M. Silva http://www.edilms.eti.br Prof. Edilberto Silva / edilms.eti.br Introdução As linguagens de

Leia mais

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

Programação Orientada a Objectos - P. Prata, P. Fazendeiro 7 Classes Abstractas e Interfaces Classe Abstracta Classe em que pelo menos um dos métodos de instância não é implementado. Exemplo: public abstract class Forma{ public abstract double area(); public abstract

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

Orientação a objetos. Programação. Orientada a Objetos. Orientação a objetos. Orientação a objetos. Abstração e encapsulamento

Orientação a objetos. Programação. Orientada a Objetos. Orientação a objetos. Orientação a objetos. Abstração e encapsulamento Orientação a objetos Programação Orientada a Objetos Alexandre César Muniz de Oliveira Linguagens orientadas a procedimentos e linguagens orientadas a objetos Unidade de programação: funções e classes

Leia mais

Programação Orientada a Objetos. Métodos e Atributos. Métodos. Métodos. Alexandre César Muniz de Oliveira. Parte III

Programação Orientada a Objetos. Métodos e Atributos. Métodos. Métodos. Alexandre César Muniz de Oliveira. Parte III Programação Orientada a Objetos Alexandre César Muniz de Oliveira Métodos e Atributos Parte III Métodos [mod] tipo nome ([tipo arg]) [throws exc]{ [mod]: zero ou mais modificadores separados por espaços

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

9 Classes Abstractas e Interfaces

9 Classes Abstractas e Interfaces 9 Classes Abstractas e Interfaces Classe Abstracta Classe em que pelo menos um dos métodos de instância não é implementado. Exemplo: public abstract class Forma{ public abstract double area(); public abstract

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

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

Linguagem de Programação IV Introdução

Linguagem de Programação IV Introdução Linguagem de Programação IV Introdução Prof. Alessandro Borges 2 Tópicos Orientação a objetos Classe Objeto Abstração Encapsulamento Herança Polimorfismo Plataforma Java 3 4 POO é um paradigma de programação

Leia mais

POO29004 Programação Orientada a Objetos

POO29004 Programação Orientada a Objetos POO29004 Programação Orientada a Objetos Classe abstrata, interface e polimorfismo Prof. Emerson Ribeiro de Mello Instituto Federal de Santa Catarina IFSC campus São José mello@ifsc.edu.br http://docente.ifsc.edu.br/mello/poo

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

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++ - Polimorfismo Polimorfismo com Hierarquias Polimorfismo

Leia mais

Conceitos de Linguagens de Programação

Conceitos de Linguagens de Programação Faculdade de Ciências e Tecnologia Departamento de Matemática e Computação Bacharelado em Ciência da Computação Conceitos de Linguagens de Programação Aula 07 (rogerio@prudente.unesp.br) Aula 7 Implementação

Leia mais

Linguagem de programação Programação Orientada a objetos

Linguagem de programação Programação Orientada a objetos Instituto Federal de Minas Gerais Campus Ponte Nova Linguagem de programação Programação Orientada a objetos Professor: Saulo Henrique Cabral Silva Paradigma da orientação a objetos Paradigma = forma de

Leia mais

Polimorfismo e Ligação Dinâmica. Alcides Pamplona Polimorfismo e Ligação Dinâmica

Polimorfismo e Ligação Dinâmica. Alcides Pamplona Polimorfismo e Ligação Dinâmica Alcides Pamplona Linguagem de Programação CESBD 2010 Alcides Pamplona alcides.pamplona@gmail.com Tópicos Ligação Dinamica Polimorfismo Verificação Dinâmica de Tipos 2 Introdução A vinculação ou ligação

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

SEMINÁRIOS INTEGRADOS EM ADS PROGRAMAÇÃO ESTRUTURADA E ORIENTADA A OBJETOS

SEMINÁRIOS INTEGRADOS EM ADS PROGRAMAÇÃO ESTRUTURADA E ORIENTADA A OBJETOS SEMINÁRIOS INTEGRADOS EM ADS PROGRAMAÇÃO ESTRUTURADA E ORIENTADA A OBJETOS Prof. Dr. Daniel Caetano 2014-1 DISCUSSÃO Visão Geral dos Paradigmas Quais os paradigmas mais comuns? Do que é composto um programa

Leia mais

Linguagem de Programação. Diagrama de classes

Linguagem de Programação. Diagrama de classes Linguagem de Programação Diagrama de classes Joyce França Professora de Ciência da Computação - IFNMG 2 Agenda Diagrama de classes Herança Associação Agregação Exercícios 3 Diagrama de classes Mostra um

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

UNIFEI Disciplina Professor

UNIFEI Disciplina Professor UNIFEI Disciplina Professor Universidade Federal de Itajubá Instituto de Engenharia de Sistemas e Tecnologias da Informação-IESTI CCO02 Enganharia de Software II Enzo Seraphim Nota de aula de Java Encapsulamento

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

Engenharia de Software. Aula 10 Representação dos Conceitos de Orientação a Objetos. Prof. Me. Rogério Ferreira

Engenharia de Software. Aula 10 Representação dos Conceitos de Orientação a Objetos. Prof. Me. Rogério Ferreira Engenharia de Software Aula 10 Representação dos Conceitos de Orientação a Objetos Prof. Me. Rogério Ferreira 2 Roteiro Representação dos Conceitos OO Mensagens Navegabilidade Pacotes Encapsulamento Herança

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

Orientação a Objetos (OO) LPG II - Java. Orientação a Objetos (OO) Programação Orientada a Objetos. Programação Procedimental

Orientação a Objetos (OO) LPG II - Java. Orientação a Objetos (OO) Programação Orientada a Objetos. Programação Procedimental Orientação a Objetos (OO) LPG II - Java Orientação a Objetos (OO) Roberto Vedoato vedoato@joinville.udesc.br Programação Procedimental x Orientada a Objetos Objetivos e Benefícios da Orientação a Objetos

Leia mais

Curso Profissional de Gestão e Programação de Sistemas Informáticos

Curso Profissional de Gestão e Programação de Sistemas Informáticos Curso Profissional de Gestão e Programação de Sistemas Informáticos Disciplina: Programação e Sistemas de Informação Classes em C++ Módulos 10 e 11 POO A professora: Sandra Soares Classes em C++ Uma class

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 2 Flávio de Oliveira Silva, M.Sc.

Programação Orientada a Objetos 2 Flávio de Oliveira Silva, M.Sc. Orientação a Objetos Revisão Conceitos CLASSE CLASSIFICAÇÃO GENERALIZAÇÃO ESPECIALIZAÇÃO HERANÇA INTERFACES POLIMORFISMO SOBRECARGA ENCAPSULAMENTO ABSTRAÇÃO MODULARIZAÇÃO 9 CLASSE Classe é um agrupamento

Leia mais

Introdução a Programação Orientada a Objetos

Introdução a Programação Orientada a Objetos Introdução a Programação Orientada a Objetos Fernando de Simas, Airton de Souza, Sérgio Roberto Centro de Ciências Tecnológicas da Terra e do Mar Universidade do Vale do Itajaí UNIVALI. 88302-202 Itajaí

Leia mais

LINGUAGEM DE PROGRAMAÇÃO

LINGUAGEM DE PROGRAMAÇÃO Técnico em Informática LINGUAGEM DE PROGRAMAÇÃO Profª Ana Paula anapaula_mandelli@hotmail.com JAVA Como qualquer linguagem de programação, a linguagem Java tem sua própria estrutura, regras de sintaxe

Leia mais

Aprendendo. Java 2. Rodrigo Mello Ramon Chiara Renato Villela. Novatec Editora Ltda.

Aprendendo. Java 2. Rodrigo Mello Ramon Chiara Renato Villela. Novatec Editora Ltda. Aprendendo Java 2 Rodrigo Mello Ramon Chiara Renato Villela Novatec Editora Ltda. www.novateceditora.com.br 1 Programação Orientada a Objetos O que é Programação Orientada a Objetos? É um paradigma de

Leia mais

Avançando em Java com Polimorfismo. Prof.: Hugo Barros

Avançando em Java com Polimorfismo. Prof.: Hugo Barros Avançando em Java com Polimorfismo Prof.: Hugo Barros Tópicos da Aula Polimorfismo: Exemplos de polimorfismo Vantagens do polimorfismo Tipos de polimorfismo Métodos Abstratos Classes Abstratas Vinculação

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

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

Interfaces. Universidade Católica de Pernambuco Ciência da Computação. Prof. Márcio Bueno. Interfaces Universidade Católica de Pernambuco Ciência da Computação Prof. Márcio Bueno poonoite@marciobueno.com Fonte: Material da Profª Karina Oliveira Interfaces É utilizada para agrupar conceitos em

Leia mais

Programação em Linguagem C++

Programação em Linguagem C++ Programação em Linguagem C++ Igor Kondrasovas Especialista em Computação Aplicada UDESC Sócio e Desenvolvedor na Inovativa Tecnologia igor@inovativatec.com www.inovativatec.com Agenda Herança e Polimorfismo

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

Encapsulamento e Métodos (Construtores e Estáticos) João Paulo Q. dos Santos

Encapsulamento e Métodos (Construtores e Estáticos) João Paulo Q. dos Santos Encapsulamento e Métodos (Construtores e Estáticos) Sobrecarga de Métodos João Paulo Q. dos Santos joao.queiroz@ifrn.edu.br Roteiro Conceitos sobre Encapsulamento; Variável this; Métodos Construtores;

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

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

POO29004 Programação Orientada a Objetos

POO29004 Programação Orientada a Objetos POO29004 Programação Orientada a Objetos Classe abstrata, interface e polimorfismo Prof. Emerson Ribeiro de Mello Instituto Federal de Santa Catarina IFSC campus São José mello@ifsc.edu.br http://docente.ifsc.edu.br/mello/poo

Leia mais

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

Programação Orientada a Objectos - P. Prata, P. Fazendeiro 9 Classes Abstractas e Interfaces Classe Abstracta Classe em que pelo menos um dos métodos de instância não é implementado. Exemplo: public abstract class Forma{ public abstract double area(); public abstract

Leia mais

Introdução. Programação Orientada a Objetos (POO) João Paulo Q. dos Santos

Introdução. Programação Orientada a Objetos (POO) João Paulo Q. dos Santos Introdução Programação Orientada a Objetos (POO) João Paulo Q. dos Santos joao.queiroz@ifrn.edu.br Avaliações Continuada: Resolução de Atividades Práticas em Sala; Resolução de Lista de Exercícios; Provas

Leia mais

Conceitos de Linguagens de Programação - Características. Paavo Soeiro

Conceitos de Linguagens de Programação - Características. Paavo Soeiro Conceitos de Linguagens de Programação - Características Paavo Soeiro Motivação Para que possa escolher uma linguagem apropriada ao problema. Melhorar o entendimento da linguagem utilizada. Facilitar o

Leia mais

Implementando subprogramas

Implementando subprogramas Implementando subprogramas Linguagens de Programação Marco A L Barbosa cba Este trabalho está licenciado com uma Licença Creative Commons - Atribuição-CompartilhaIgual 4.0 Internacional. http://github.com/malbarbo/na-lp-copl

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