Anda di halaman 1dari 26

PARADIGMAS

DE

PROGRAMAO
(MC-3308)

Profa. Debora Medeiros

Composio vs Herana

COMPOSIO E HERANA

Formas de relao entre classes

Composio

Referncias para outras classes

Herana

Subtipos

EXEMPLO

Elemento com configurao em 2 dimenses

Construo de objetos a partir de partes simples

Arrays, linhas e retngulos

CLASSES ABSTRATAS

No pode ser
instanciada

Mtodo abstrato:
sem
implementao
Membros abstratos no
podem ter modificadores
abstract

Para isso, a
classe precisa
ser abstrata

MTODOS SEM PARMETROS

Sem efeito
colateral

Efeito colateral
Conveno

MTODOS SEM PARMETROS

Equivalentes do ponto
de vista do usurio da
classe

Princpio do acesso uniforme


(Ausente no Java)

MTODOS SEM PARMETROS E COM LISTA DE


PARMETRO VAZIA

Um pode sobrescrever outro


possvel eliminar ( ) em ambos
Conveno

Utilizar ( ) na invocao de mtodos com efeito colateral

ESTENDENDO CLASSES

ESTENDENDO CLASSES

Principio do acesso uniforme

Um atributo pode sobrescrever

Mtodos e atributos com mesmo nome


Java ok

Scala no permite

Proibido mtodos e
atributos com o
mesmo nome na
mesma classe

ATRIBUTOS PARAMTRICOS

Combinar atributos e parmetros

ATRIBUTOS PARAMTRICOS

Utilizao de
var e
modificadores

INVOCANDO CONSTRUTOR DA SUPERCLASSE

DIAGRAMA DE CLASSES

INVOCANDO CONSTRUTOR DA SUPERCLASSE

for(i<-Array.fill[String](width)(name) zip (1 to
width)) yield {i._1 + i._2}

Criando um vetor de string com for e


passando para o construtor da superclasse

Acrescentando na classe Element:

MODIFICADOR OVERRIDE

Necessrio quando se sobrescreve um membro


concreto

til para evitar erros difceis de se encontrar

Por exemplo:
erros de
digitao

POLIMORFISMO

POLIMORFISMO

POLIMORFISMO

POLIMORFISMO

ArrayElement

LineElement

Element

MEMBROS E CLASSES FINAIS

No podem ser sobrescritos

COMPOSIO E REUSO

COMPOSIO E REUSO

Problema?

COMPOSIO E REUSO

ATIVIDADE

Implementar um conjunto de classes que permita a manipulao de


matrizes, como criao, concatenao vertical e horizontal, adio de
linhas e aplicao de funes s linhas.
Especificao das classes:

Linha

Matriz

Membros:contedo: Lista de Double


Membros:
contedo: lista de Linha
above: concatena verticalmente a matriz passada como parmetro (devem ter o
mesmo nmero de colunas)
beside: concatena horizontalmente a matriz passada como parmetro (devem ter o
mesmo nmero de linhas)

LinhaEsp (estendida de Linha, cria uma linha especifica, ex. sequncia com
incio e comprimento)

Obs.:
Os objetos devem ser funcionais, ou seja, qualquer modificao gera um
objeto novo.
Procure utilizar o menor nmero de vars e funes impuras, possvel.
Podem ser criados mais membros alm daqueles especificados.
Quanto menores e em maior nmero forem as funes/mtodos, melhor.

ATIVIDADE

REFERNCIAS

Programming in Scala, Martin Odersky, Lex


Spoon, and Bill Venners

Anda mungkin juga menyukai