Escolar Documentos
Profissional Documentos
Cultura Documentos
UCAe POO
UCAe POO
contedo
O livro Use a Cabea AePOO uma nova forma de examinarmos o assunto orientao a objetos. O que diferencia este livro o seu foco no aprendizado. H muitos livros no mercado que passam um monte de tempo dizendo a voc o porqu, mas na verdade no permitem que o profissional comece a trabalhar em um projeto. Esses livros so muito interessantes, mas no so muito prticos. Eu acredito piamente que o futuro da prtica de desenvolvimento de software ir se concentrar no profissional. Os autores tornaram o contedo da orientao a objetos acessvel e utilizvel para o profissional. Ivar Jacobson, Ivar Jacobson Consulting. Eu acabei de ler Use a Cabea e amei! O livro consegue comunicar os pontos essenciais da anlise e do projeto da orientao a objetos com UML e usa casos, e at mesmo vrias palestras, sobre o bom projeto de software, tudo isso de uma forma rpida e fcil de entender. O que eu mais gostei neste livro foi seu foco na razo pela qual usamos a AePOO para escrever programas fantsticos! Ao definir o que um software fantstico e mostrar como cada etapa do processo de AePOO leva voc em direo a esse objetivo, ele ensina at mesmo ao programador Java mais enjoado porque a AePOO importante. Este um grande primeiro livro sobre projeto para qualquer um que no esteja familiarizado com Java, ou at mesmo para aqueles que so programadores Java por um tempo, mas que morrem de medo de livros enormes sobre anlise e projeto da orientao a objetos. Kyle Brown, engenheiro reconhecido da IBM. Finalmente um livro sobre AePOO que reconhece que UML no apenas uma notao e que o que importa no desenvolvimento de software parar para pensar nos problemas. Pete McBreen, autor, Software Craftsmanship. Este livro faz um bom trabalho de captura do estilo de escrita divertido e visual da srie Use a Cabea. Mas atrs das figuras engraadas e das fontes enlouquecidas, h uma apresentao sria, inteligente e extremamente bem feita da anlise e projeto da orientao a objetos. Este livro possui uma opinio forte sobre como os programas devem ser projetados e a comunica com eficincia. Eu adoro a forma como ele usa exemplos prticos para mostrar ao leitor os estgios do processo do projeto. Enquanto lia o livro, me senti como se estivesse olhando sobre o ombro de um projetista experiente, que estava me explicando quais so os assuntos importantes em cada etapa e porqu. Edward Sciore, professor adjunto do Computer Science Department no Boston College. Este um livro bem projetado que entrega o que promete aos seus leitores: como analisar, projetar e escrever software orientado a objetos. Seu contedo flui sem esforos do uso de casos para a captura de requisitos de anlise, projeto, implementao, teste e repetio. Cada etapa do desenvolvimento de software orientado a objetos apresentada de acordo com os princpios da engenharia de software. Os exemplos so claros e ilustrativos. Este um livro slido e agradvel sobre o desenvolvimento de software orientado a objetos. Dung Zung Nguyen, conferencista da Rice University.
Elogios para outros livros da srie Use a Cabea escritos pelos autores
Quando chegamos em casa depois de um dia de 10 horas de trabalho em programao, quem tem vontade de mergulhar em outra nova faceta de tecnologia emergente? Se um desenvolvedor vai investir seu tempo livre no desenvolvimento de uma carreira orientada por ele mesmo, isso no deve ser pelo menos agradvel? A julgar pelo contedo do lanamento da OReilly, Use a Cabea Ajax, a resposta sim... Use a Cabea Ajax a plataforma de lanamento mais divertida do mundo das aplicaes web do Ajax; vale o investimento em tempo e em dinheiro. Barry Hawkins, Slashdot.org. Ao comear por conceitos e exemplos simples, o livro leva suavemente o leitor do incio humilde para (no final do livro) a criao confortvel de sites baseados em Ajax... , provavelmente, o melhor livro de Ajax destinado a web projetores. Stefan Mischook, Killersites.com. Usando o estilo irreverente comum da srie Use a Cabea, este livro comea pelo bsico e o apresenta a tudo o que voc precisa conhecer para escrever o JavaScript que enviar solicitaes para o servidor, e atualizar a pgina com os resultados quando eles forem devolvidos... Uma das melhores coisas deste livro (alm das explicaes excelentes sobre como o cdigo funciona) que ele tambm examina os problemas de segurana... Se voc aprender Ajax neste livro, muito pouco provvel que esquea alguma coisa do que aprendeu. Stephen Chapman, JavaScript.About.com. Use a Cabea Ajax o livro certo se voc quiser desmistificar todo o falatrio e aprender a fazer seus aplicativos web surpreenderem... Seus usurios vo vener-lo por isso! Kristin Stromberg, Aguirre International. Se voc conhece um pouco de HTML, algo de CSS, um pouco de JavaScript e alguma coisa de PHP, mas est surpreso com todo o bafaf que cerca o Ajax, este o livro certo... Voc ter um aprendizado a todo vapor com Use a Cabea Ajax. Quando terminar o livro, todas aquelas tecnologias para web que parecem no se ajustar em sua cabea sero colocadas em seus lugares e voc ter o Poder Ajax! Voc saber os segredos por trs de algumas das aplicaes web mais populares na Internet. Voc impressionar seus amigos e colegas de trabalho com o seu conhecimento de como os mapas interativos e os formulrios na web realmente funcionam. Elisabeth Freeman, diretora de tecnologia do The Walt Disney Internet Group, co-autora de Use a Cabea Padres de Projeto e de Use a Cabea HTML com CSS & XHTML.
contedo
Este livro para quem considerou oAjax muito avanado. Use a CabeaAjax coloca experincias dinmicas e interessantes ao alcance de todos os desenvolvedores da Web. Jesse James Garrett, da Adaptive Path. Isso alimento para meu crebro, no consigo me cansar. Pauline McNamara, do Center for New Technologies and Education da Fribourg University, Sua.
ii
Apndice 2
contedo
iii
contedo
Troca de requisitos
public void pressButton() { System.out.println(Pressionando o boto do controle remoto...); if (door.isOpen()) { door.close(); } else { door.open(); final Timer timer = new Timer(); timer.schedule(new TimerTask() { public void run() { door.close(); timer.cancel(); } }, 5000); } } Voc se lembra? Esse cronmetro aguarda 5 segundos e ento envia uma solicitao para que a porta feche.
Remote.java
xii
Apndice 2
contedo
Anlise
Leve seu software para o mundo real hora da graduao em aplicaes do mundo real. Sua aplicao precisa fazer muito mais do que funcionar em sua prpria mquina de desenvolvimento pessoal, que est finamente ajustada e perfeitamente configurada; suas aplicaes precisam funcionar quando pessoas reais as utilizam. Este captulo fala sobre garantir que o seu software funcione em um contexto de mundo real. Voc aprender como a anlise textual pode pegar esse caso de uso em que voc est trabalhando e transform-lo em classes e mtodos que voc sabe que so o que os seus clientes desejam. E, quando terminar, voc tambm poder dizer: Eu consegui! Meu software est pronto para o mundo real!
Um cachorro, dois cachorros, trs cachorros, quatro... O seu software possui um contexto Identificar o problema Planejar uma soluo Um conto de dois codificadores Desvio de delegao O poder de aplicaes livremente unidas Preste ateno nos substantivos em seu caso de uso Da boa anlise para as boas classes... Dissecamos os diagramas de classes Diagramas de classes no so tudo Bullets 104 104 105 106 111 114 116 119 127 129 132 135
Quando descobri as classes e operaes de que precisava, eu atualizei meu diagrama de classes.
No mundo real, existem cachorros, gatos, roedores e um monte de outros problemas, todos mancomunados para acabarem com o seu software.
O Mundo Real
xiii
contedo
5 (parte 1)
xiv
Apndice 2
contedo
5 (parte 2)
bom projeto = software flexvel Oferea ao seu software uma ginstica de 30 minutos
Voc sempre quis ser mais flexvel? Quando voc encontra problemas ao fazer alteraes em sua aplicao, isso provavelmente significa que o seu software precisa ser mais flexvel e elstico. Para ajudarmos a esticar sua aplicao, vamos fazer anlises, um monte de projetos e aprender como os princpios da OO podem soltar sua aplicao. E, para o grand finale, voc ver como uma coeso maior pode realmente ajudar no seu emparelhamento. Parece interessante? Vire a pgina e vamos voltar para corrigir aquela aplicao inflexvel. De volta ferramenta de pesquisa do Rick Um exame mais profundo do mtodo search() As vantagens da anlise As classes esto relacionadas ao comportamento A morte de um projeto (deciso) Transforme pssimas decises sobre projeto em timas decises Encapsulamento duplo no software do Rick Nunca tenha medo de errar A aplicao flexvel do Rick Test drive do software bem projetado Qual o grau de dificuldade de alterar o software do Rick? O grande desafio da facilidade de uso Uma classe coesiva faz uma coisa realmente bem O ciclo de vida do projeto/coeso Grande software bom o bastante Caixa de ferramentas da AePOO 166 167 167 170 173 174 175 180 182 184 187 188 190 192 194 195
xv
contedo
O GRANDE PROBLEMA , na verdade, somente um conjunto de funcionalidades, onde cada uma um pequeno problema individual.
Grande problema
xvi
Apndice 2
contedo
Arquitetura
Riscmetro gigante
xvii
contedo
Princpios de projeto
A originalidade superestimada
A imitao a forma mais sincera de no sermos burros. No h nada mais satisfatrio do que bolar uma soluo totalmente nova e original para um problema que o perturba por dias at que voc descobre que outra pessoa resolveu o mesmo problema muito antes de voc e ainda por cima fez um trabalho muito melhor! Neste captulo, vamos ver alguns princpios de projeto imaginados pelas pessoas em todos esses anos, e como eles podem torn-lo um programador melhor. Deixe de lado sua mania de fazer sua maneira; este captulo sobre fazer da forma mais rpida e mais inteligente. Resumo dos princpios de projeto O princpio do aberto-fechado (OCP) 268 268 269 271 273 279 280 283 288 288 289 289 290 291 293 296 297 298 299 300
O princpio do aberto-fechado
O OCP, passo a passo O princpio do no se repita (DRY) O DRY sobre um requisito em um local O princpio da responsabilidade nica (SRP) Descobrimos vrias responsabilidades De vrias responsabilidades para uma nica O princpio da substituio Liskov (LSP) Mau uso das subclasses: um estudo de caso sobre mau uso de herana O LSP revela problemas ocultos com a sua estrutura de heranas Os subtipos devem poder ser substitudos por seus tipos base
O princpio da responsabilidade nica
O princpio do no se repita
Violar o LSP tornar seu cdigo confuso Delegue funcionalidade para outra classe Use a composio para juntar comportamentos de outras classes Agregao: uma composio sem o final abruto Agregao versus composio A herana somente uma opo Bullets Caixa de ferramentas da AePOO
xviii Apndice 2
contedo
Repetio e testes
Unit
type: String properties: Map id: int name: String weapons: Weapon *
Todas as propriedades comuns s unidades so representadas como variveis fora do mapa de propriedades.
setType(String) getType(): String setProperty(String, Object) getProperty(String): Object getId(): int getName(String) getName(): String addWeapon(Weapon) getWeapons() Weapon
Sam descobriu que funcionaria no construtor Unit; portanto, no precisamos de um mtodo setId(). Cada uma das novas propriedades possui seu prprio conjunto de mtodos.
xix
contedo
10
348 352 354 357 361 365 367 376 382 385 393 395 397 401 406 409 413 416
Princpios da OO
Padro de Projeto Princpios de Projeto Arquitetura Iniciador Externo Encapsulamento Anlise Situao Fale com o cliente Padro de Projeto Encapsulamento Diagramas de
caso de uso Divida o problema Requisitos Anlise de Projeto preliminar Implementao
domnio Entrega Atributos comuns Anlise textual Desenvolvimento orientado a recursos Lista dos principais recursos Caminho AlternativoRepetio Repetio Delegao Iniciador externo Coeso Desenvolvimento orientado a testes Inconstncia Repetio Arquitetura Princpios de Projeto Repetio Lista de Requisitos Diagrama de classe Situao de Teste Caminho Alternativo
xx
Apndice 2
contedo
Apndice I: as sobras
418 419 421 421 422 423 424 425 427 428
Antipadres Os antipadres so o contrrio dos padres de projeto: so as solues RUINS comumente usadas. Essas armadilhas perigosas devem ser reconhecidas e evitadas.
No se esquea de escrever aquilo que esta classe faz por conta prpria, assim como as coisas em que ela colabora com outras classes.
Classe: DogDoor Descrio: representa a porta para cachorros fsica. Oferece uma interface com o hardware que realmente controla a porta. Responsabilidades: Nome Colaborador
Abrir a porta Fechar a porta No h classe colaboradora.
xxi
contedo
II
Fale a linguagem da OO
Prepare-se para uma viagem internacional. Prepare-se para visitar a Objetolndia, um pas onde os objetos fazem exatamente o que se espera deles, as aplicaes so bem encapsuladas (voc saber o que isso significa em instantes) e os projetos so facilmente reutilizados e estendidos. Mas antes de partir, h algumas coisas que voc precisa saber primeiro, e algumas habilidades de linguagem que voc ter de aprender. No se preocupe, isso no vai demorar e, antes que perceba, voc estar falando a linguagem de OO como se vivesse h anos nas reas bem projetadas de Objetolndia. UML e os diagramas de classe Herana Polimorfismo Encapsulamento Bullets
Este o nome da classe. Estar sempre em negrito, na parte superior do diagrama de classes.
assim que voc mostra uma classe em um diagrama de classes. Essa a forma como o UML deixa que voc represente detalhes sobre as classes em sua aplicao. Estas so as variveis membro da classe. Cada uma tem um nome e exibe o tipo aps os dois pontos.
Estes so os mtodos da classe. Cada um tem um nome e ento exibe quaisquer parmetros que aceitar e um tipo de retorno aps os dois pontos.
Um diagrama de classes nos ajuda a ter uma viso geral: voc pode facilmente dizer qual a funo de uma classe de imediato, e nunca poder deixar as variveis e/ou os mtodos de fora se eles ajudarem na comunicao.
xxii Apndice 2