aula05-heranca-composicao
DESCRIPTION
Aula05-heranca-composicaoTRANSCRIPT
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
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
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
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
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.