engenharia de software projeto de software -...
TRANSCRIPT
Engenharia de Software – Projeto de software
Professor: Saulo Henrique Cabral Silva
Instituto Federal de Minas Gerais Campus Ponte Nova
“Uma figura vale por mil palavras”
• Em construções Civis, frequentemente há profissionais analisando as plantas da construção.
– Cada planta é um modelo daquela obra (hidráulica, elétrica, estrutural, ...)
3
“Uma figura vale por mil palavras”
• Em construções Cíveis, frequentemente há profissionais analisando as plantas da construção. – Cada planta é um modelo daquela obra (hidráulica, elétrica, estrutural, ...)
• A partir da análise dessas é possível acompanhar o andamento da obra...
– Em Software também não é diferente...
• Precisamos de uma forma de representar modelos (diagramas) na área de software também.
4
COMO REPRESENTAR UM SOFTWARE POR MODELOS – “PLANTAS” -
DIAGRAMAS ???
INICIANDO COM A ABSTRAÇÃO DO PARADIGMA ORIENTADO A OBJETOS
5
Paradigma da orientação a objetos
• Paradigma = forma de abordar um problema. – Paradigma orientado a objetos ???
• O paradigma de orientação a objetos foi formulado já há alguns bons anos atrás. – “analogia biológica”
– Sistema deve funcionar como
um ser vivo.
6
Paradigma da orientação a objetos (5 mandamentos)
• Qualquer coisa é um objeto.
• Objetos realizam tarefas através da requisição de serviços a outros objetos para realizar uma determinada tarefa.
• Cada objeto pertence a uma determinada
classe. Uma classe agrupa objetos similares.
• A classe é um repositório para
comportamento associado ao objeto.
• Classes são organizadas em hierarquias.
7
Exemplificando…
• Suponha que alguém queira comprar pizza. Esse alguém é o João que por sinal esta muito ocupado em casa e resolve pedir a sua pizza por telefone. Ele liga para a pizzaria e realizar o seu pedido. Ele informa ao atendente (José) seu nome, características da pizza desejada e seu endereço. O atendente (José) tem a função de apenas ser o atendente da pizzaria, comunica a Maria que é a funcionária incumbida de fazer a pizza. Quando Maria termina de fazer
a pizza, José chama Antônio, o entregador.
Finalmente, João que fez o pedido recebe a
pizza desejada das mãos de Antônio meia hora
depois de ter efetuado o pedido.
8
Analisando o problema (Princípios)
• O objetivo foi alcançado através da colaboração de diversos agentes (objetos).
• Todos colaboraram com uma parte, e o objetivo foi atingido com o trabalho de todos.
• Antônio é um entregador. (classe entregador)
• Uma função específica de um entregador é...
• Organizar em: classes Pessoa, funcionário, cliente
9
Orientação a Objetos X Sistemas…
• É possível desenvolver um software sem a orientação a objetos??
10
O que a modelagem orientada a obejtos tem a ver com a modelagem de sistemas ?
• É possível desenvolver um software sem a orientação a objetos ???
• Sim!!!! Antes da orientação a objetos , um paradigma muito utilizado era o estruturado. – Processos realizam operações sobre dados para que um determinado
objetivo seja alcançado.
• No paradigma orientado a objetos trabalhamos com um contexto mais próximo aos dos seres humanos. – Imagina você explicando para o cliente como um
programa funciona.
– Imagina você explicando como objetos se relacionam
para que o problema do usuário seja solucionado.
11
Resumindo
• O paradigma da orientação a objetos visualiza um sistema de software como uma coleção de agentes interconectados chamados de objetos. Cada objeto é responsável por realizar tarefas específicas. É através da interação entre estes objetos que uma tarefa computacional é realizada.
• A semântica da orientação a objetos, como
técnica para modelagem diminui a diferença
semântica entre a realidade sendo modelada e
o que realmente será construído.
12
Classes e objetos
• O mundo real é formado de coisas (pessoa, quadro, computador, fornecedor, ...). – Toda coisa do mundo real é chamada de objeto na modelagem orientada
a objetos.
• Nos seres humanos ainda costumamos agrupar os objetos. – Esse processo de agrupar coisas reduz a complexidade de interpretar e
abstrair tantas opções que existem atualmente. – Ex: é muito mais fácil se lembrar o que um cavalo (ideia/molde).
• Uma classe é a ideia geral (é o molde). A classe:
– Contem a descrição dos atributos e serviços(ações) comuns a um grupo de objetos. – Dizemos que um objeto é uma instancia de uma classe.
14
Contextualizando
• Vem a mente um objeto (animal): – 4 patas
– Crina
– Cauda
– ...
• É importante sempre lembrar que uma
classe é uma representação abstrata de
coisas do mundo real. – Coisas do mundo real são muito complexas para que todas as suas
características sejam representadas em uma classe.
– Para cada problema posso ter atributos mais ou menos relevantes...
15
Objetos - Mensagens
• Objetos não executam as suas ações
por conta própria.
• Para que a ação de um objeto possa ser executada é necessário que tenha ocorrido algum tipo de estimulo.
• Quando um estimulo é enviado (percebido) por um objeto, dizemos que houve uma mensagem para o objeto.
• Lembrem se do exemplo de João pedindo uma pizza...
16
Objetos - encapsulamento
• Objetos possuem comportamento. – Operações que os mesmo podem realizar.
• Quando nos referimos ao comportamento dos objetos, estamos pretendendo restringir o acesso ao comportamento interno do objeto.
• Para que a estratégia seja adotada é preciso adotar aqui o conceito de interface de um objeto/classe.
• A única coisa que um objeto deve conhecer de outro é a sua interface (métodos).
17
Objetos – encapsulamento (vantagens)
• A única coisa que um objeto precisa saber para pedir colaboração de outro é conhecer a interface (métodos).
• Autonomia dos objetos.
• Cada objeto envia mensagem a outros para
realizar certas tarefas sem se
preocupar em como as tarefas são
realizadas.
• Escondemos os detalhes de funcionamento
interno dos objetos.
18
Objetos - Polimorfismo
• Indica a capacidade de abstrair várias implementações diferentes de uma única interface.
• A mesma mensagem é enviada, mas
para interfaces diferentes.
• Aparelhos diferentes de mesmos fabricantes
“conversam”.
• Classes abstratas (abstract)
19
Objetos - herança
• A herança é outra forma de abstração
utilizada na orientação a objetos.
• Existe a organização das características e comportamentos comuns a um conjunto de objetos que podem ser abstraídos em uma única classe.
• Cada classe em um nível da
hierarquia herda as
características das classes
nos níveis acima.
20
Complementando informações sobre classes
• Programando um pouco para entender o uso de herança na programação orientada a Objetos...
• extends
• Voltando ao exemplo dos animais
21 21