engenharia de software projeto de software -...

22
Engenharia de Software Projeto de software Professor: Saulo Henrique Cabral Silva Instituto Federal de Minas Gerais Campus Ponte Nova

Upload: duongtuong

Post on 03-Dec-2018

219 views

Category:

Documents


0 download

TRANSCRIPT

Engenharia de Software – Projeto de software

Professor: Saulo Henrique Cabral Silva

Instituto Federal de Minas Gerais Campus Ponte Nova

MODELANDO UM SOFTWARE

2

“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

13

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