Apostila do ferrari
1- Top-Down Design versus Object-Oriented Design
Ciclo de desenvolvimento de software (tradicional): • Initiation, Analysis, Design, Implementation, Testing, Maintenance
Objetivo da fase de Design: • Transformar a especificação funcional do sistema ("o sistema precisa fazer isso, isso, e isso") em um modelo abstrato (versão geral, não muito detalhada) do programa final.
Técnica de projeto "Top-Down" • A partir da especificação inicial, decompor (funcionalmente) o problema em problemas menores (técnica de refinamentos sucessivos, para algoritmos).
Exemplo: Festa de formatura
1. Arrumar um salão
2. Arrumar comida
3. Arrumar uma banda
4. Cuidar dos convites • Fazer a lista de convidados • Consultar preços e escolher • Mandar fazer • Arrecadar o dinheiro e pagar • distribuir
Exemplo: vídeo locadora
Sistema • Módulo alterações na base de dados • Adicionar ou eliminar cliente • Adicionar ou eliminar fita • Módulo consultas à base de dados • Onde está tal fita? • Quanto deve tal cliente? • Relatórios financeiros • Módulo: transações rotineiras • empréstimo • devolução • pagamento
Object-Oriented Design • A partir da especificação inicial, identificar os objetos, e a seguir descrever seu comportamento, responsabilidades, componentes e relacionamentos.
Exemplo: vídeo locadora
Objeto Cliente • Inclui cliente, elimina cliente, quanto deve?
Objeto Fita • Inclui fita, elimina fita, onde está?
Objeto Caixa • Pagamento • Relatórios financeiros
Objeto Emprestimo
Objeto Devolução
2- Tipos Abstratos de Dados (TADs)
Uma das motivações: dar ao projetista de software condições de especificar os dados de um programa através de sua funcionalidade sem fornecer detalhes de sua implementação. Ou seja, a especificação abstrata mostra o que é possível FAZER com os dados, ou