aula05-heranca-composicao

26
P ARADIGMAS DE PROGRAMAÇÃO (MC-3308) Profa. Debora Medeiros Composição vs Herança

Upload: rafls29

Post on 21-Feb-2016

213 views

Category:

Documents


0 download

DESCRIPTION

Aula05-heranca-composicao

TRANSCRIPT

PARADIGMAS DE PROGRAMAÇÃO

(MC-3308)

Profa. Debora Medeiros

Composição vs Herança

COMPOSIÇÃO E HERANÇA

Formas de relação entre classes

Composição

Referências para outras classes

Herança

Subtipos

EXEMPLO

Elemento com configuração em 2 dimensões

Construção de objetos a partir de partes simples

Arrays, linhas e retângulos

CLASSES ABSTRATAS

Método abstrato:

sem

implementação

Para isso, a

classe precisa

ser abstrata

Não pode ser

instanciada

Membros abstratos não

podem ter modificadores

abstract

Convenção

MÉTODOS SEM PARÂMETROS

Efeito colateral Sem efeito

colateral

MÉTODOS SEM PARÂMETROS

Equivalentes do ponto

de vista do usuário da

classe

Princípio do acesso uniforme

(Ausente no Java)

MÉTODOS SEM PARÂMETROS E COM LISTA DE

PARÂMETRO VAZIA

Um pode sobrescrever outro

É possível eliminar ( ) em ambos

Convenção

Utilizar ( ) na invocação de métodos com efeito colateral

ESTENDENDO CLASSES

ESTENDENDO CLASSES

Principio do acesso uniforme

Um atributo pode sobrescrever

Métodos e atributos com mesmo nome

Java ok Scala não permite

Proibido métodos e

atributos com o

mesmo nome na

mesma classe

ATRIBUTOS PARAMÉTRICOS

Combinar atributos e parâmetros

ATRIBUTOS PARAMÉTRICOS

Utilização de

var e

modificadores

INVOCANDO CONSTRUTOR DA SUPERCLASSE

DIAGRAMA DE CLASSES

INVOCANDO CONSTRUTOR DA SUPERCLASSE

Acrescentando na classe Element:

Criando um vetor de string com for e

passando para o construtor da superclasse

for(i<-Array.fill[String](width)(name) zip (1 to

width)) yield {i._1 + i._2}

MODIFICADOR OVERRIDE

Necessário quando se sobrescreve um membro

concreto

Útil para evitar erros difíceis de se encontrar

Por exemplo:

erros de

digitação

POLIMORFISMO

POLIMORFISMO

POLIMORFISMO

POLIMORFISMO

Element

LineElement

ArrayElement

MEMBROS E CLASSES FINAIS

Não podem ser sobrescritos

COMPOSIÇÃO E REUSO

COMPOSIÇÃO E REUSO

Problema?

COMPOSIÇÃO E REUSO

ATIVIDADE

Implementar um conjunto de classes que permita a manipulação de matrizes, como criação, concatenação vertical e horizontal, adição de linhas e aplicação de funções às linhas.

Especificação das classes: Linha

Membros:conteúdo: Lista de Double

Matriz Membros:

conteúdo: lista de Linha

above: concatena verticalmente a matriz passada como parâmetro (devem ter o mesmo número de colunas)

beside: concatena horizontalmente a matriz passada como parâmetro (devem ter o mesmo número de linhas)

LinhaEsp (estendida de Linha, cria uma linha especifica, ex. sequência com início e comprimento)

Obs.: Os objetos devem ser funcionais, ou seja, qualquer modificação gera um

objeto novo.

Procure utilizar o menor número de vars e funções impuras, possível.

Podem ser criados mais membros além daqueles especificados.

Quanto menores e em maior número forem as funções/métodos, melhor.

ATIVIDADE

REFERÊNCIAS

Programming in Scala, Martin Odersky, Lex

Spoon, and Bill Venners