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