Orientação a Objetos na prática

41
Orientação a Objetos na prática Paulo Moura

Transcript of Orientação a Objetos na prática

Orientao a Objetos na prticaPaulo Moura

O mundo procedural

O mundo tambm orientado a objetos

ObjetosInteraesgeraComportamentos

Mas OO sobre modelar o mundo real?

Servlet API

Servlet API

Criar um design OO parar de pensar o mundo como um conjunto de procedimentos e comear a v-lo como uma srie de troca de mensagens entre objetos

Design

DesignBOM

DesignBOMfcil de mudar

DesignBOMfcil de mudarprazer de escrever

DesignBOMfcil de mudarprazer de escreverflexvel, adaptvel

DesignBOMfcil de mudarprazer de escreverflexvel, adaptvelcomponetizvel (composable)

Dependncias

DependnciasAplicaes orientadas a objetos so feitas de partes que interagem para produzir comportamento do todo.

Programe orientado a interface, no implementao

public class FuncionarioDao { public void gravaEmLote(ArrayList funcionarios) { ... }}

public class FuncionarioDao { public void gravaEmLote(Collection funcionarios) { ... }}

public class FuncionarioDao { public void gravaEmLote(Collection funcionarios) { ... }}

Tell, dont ask

def street_name(user) if user.address user.address.street_name else 'No street name on file' endend

def street_name(user) user.address.street_nameend class User def address @address || NullAddress.new endend class NullAddress def street_name 'No street name on file' endend

def street_name(user) user.address.street_nameend class User def address @address || NullAddress.new endend class NullAddress def street_name 'No street name on file' endendresponsabilidade nica

def street_name(user) user.address.street_nameend class User def address @address || NullAddress.new endend class NullAddress def street_name 'No street name on file' endendresponsabilidade nica

Seus mdulos devem ser abertos para a extenso e fechados para modificao

Princpio Aberto/Fechado

Princpio Aberto/Fechado

Princpio da Substituio de Liskov

Princpio da Segregao de interfacesclientes no devem ser forados a depender de interfaces que no usam

Princpio da inverso de dependncia

Obrigado!Paulo moura@paulociecomp