Sei sulla pagina 1di 73

Anlise Orientada a Objetos

Fases no desenvolvimento de um software

Anlise ou especificao
Requisitos, conceito do domnio

Projeto
Soluo lgica, representao da anlise

ttulo

Livro

Programao, construo ou desenvolvimento


Cdigo, representao em uma linguagem de programao; Delphi, C++, Java, Visual Basic, Cobol, etc

Testes

class Livro { public: void imprimir(); private String titulo; }

Orientao a objetos

Crise do software e necessidade de mudar Surgiu a idia da orientao a objetos que representa melhor o mundo real, uma vez que a percepo e o raciocnio do ser humano esto relacionados diretamente com o conceito de objetos. Objetivo principal da utilizao do paradigma da Orientao a Objetos, na construo de software : Rpido
no perder muito tempo no desenvolvimento

Barato
linhas de montagem e reutilizao de cdigo

Flexvel
fcil modificar ou extender

Estruturada x OO

Com a orientao a objetos procura-se eliminar as diferenas entre as etapas de anlise, projeto e implementao, reabilitando a difamada tarefa de implementao

O segredo fazer com que os conceitos de programao, e as notaes para programao, sejam suficientemente de altonvel para que possam servir apropriadamente como ferramentas de modelagem.

Estruturada x OO

Sistema de informao de bibliotecas

A/P orientados a objetos Decompor por objetos ou conceitos

A/P estruturados Decompor por funes ou processo Sistema

Catlogo

Bibliotecrio Biblioteca

Registrar emprstimos
Adicionar recursos

Livro

Relatar multas

Orientao a Objetos

Mecanismos Bsicos
Objetos

Atributos
Mtodos ou Servios Mensagens

Relacionamentos
Herana

Conceitos Chaves
Abstrao Encapsulamento Polimorfismo Persistncia

Mecanismos bsicos

7/105

Objetos

Trata-se de uma abstrao de algo no domnio do problema. Reflete a capacidade do sistema de guardar informaes sobre o elemento abstrado, interagir com este, ou ambos. Nele esto contidos os dados (atributos) e os procedimentos (servios) exclusivos ao objeto -> Encapsulamento.

Objetos - Exemplo
Na informatizao do cadastramento de pessoas de uma loja comercial, sero encontrados diversos objetos pertencentes ao domnio do problema. Um objeto abstrado poderia ser o Silvio, um funcionrio da loja. Este objeto possui suas particularidade : Abravanel dos Santos (Nome) , rua de Baixo, 13 (Endereo), 1 (Faltas) , 1000.00 (Salrio Base). H tambm os eventos que podem ocorrer sobre os atributos anteriores, como : o clculo salarial, alterao do endereo, etc; Um objeto refere-se a uma OCORRNCIA NICA.

Classes

Uma classe uma coleo de objetos com um estrutura, comportamento, relaes e semntica comuns Classes so descobertas pelo exame dos objetos nos diagramas de Sequncia e Colaborao;
Nas classes esto descritas as caractersticas dos Atributos e Mtodos, que representaro as particularidades dos vrios objetos.

10/105

Classe - Exemplo

No exemplo da loja comercial, existe um objeto que se chama Silvio, alm deste existe tambm o Joo, Jos, Manuel, etc. Cada um deles representando uma ocorrncia nica, com seus nomes, endereos, faltas e salrios. Funcionrio poderia ser o nome da classe a qual pertence Silvio. Assim como este funcionrio, os outros tero as mesmas caractersticas (mesmo tipo de atributo e sero aplicados os mesmos eventos).

Instncia - Classe & Objeto


Instncia um sinnimo para o termo Objeto,
tambm encontrado na literatura, Instncia de
Uma Classe, ou simplesmente Instncia.
Por exemplo : o objeto Vectra" uma instncia da classe

"Automvel".

Usa-se o termo Classe & Objeto para se referenciar

uma Classe e os Objetos que a ela pertencem.

Atributos

Um atributo qualquer propriedade, qualidade ou caracterstica que pode ser atribuda a uma pessoa ou objeto (Webster). Armazena uma informao de estado, para o qual cada objeto em uma classe tem seu prprio valor; Os atributos devem ser manipulados exclusivamente por servios, portanto so privativos da classe, no devendo ter seus valores alterados por nenhuma outra parte que no pertena a prpria classe.

Atributos

A estrutura de uma classe representada pelos seus atributos Atributos podem ser encontrados pelo exame das definies de classes, requisitos de problemas, e pela aplicao do conhecimento do domnio

14/105

Atributos - exemplo

na classe Funcionrio, alguns atributos so :


Nome, Endereo, Telefone, CPF, Cdigo, Data de Admisso, Turno, Faltas, Horas Extras, No. de dependentes e Salrio Base.
o objeto Silvio possui como informao de estado para o

atributo nome o valor de : Abravanel dos Santos e para faltas : o valor 1.

Outros Exemplos :
classe Automvel - atributos : Modelo, Marca, Ano, Cor,

Nmero do Chassi.
Disco - atributos Ttulo, Cdigo, Gnero

Mtodos ou Servios

So as operaes efetuadas pelos objetos; O comportamento de uma classe representado pelas suas operaes; um comportamento especfico, residente no objeto, que define como este deve agir quando exigido, atravs do recebimento de uma mensagem So eles que iro alterar os valores dos atributos de um determinado objeto.
Do ponto de vista da programao, em um Programa

Orientado a Objetos, os servios esto implementados em funes colocados a nvel do objeto.

Mtodos ou Servios - Exemplo

No sistema da loja comercial, alguns dos servios so as operaes de Clculo do salrio, Alterao do Endereo. Que podem ser efetuadas sobre os atributos de um funcionrio. no caso do Clculo do salrio, algum enviar uma mensagem para que o objeto calcule o salrio, e o objeto (que j possui conhecimento dos dados necessrios para o clculo), far o processamento e retornar para o algum o valor do salrio lquido.

Servios - Tipos

Clculos
Tratam-se de servios que calculam o resultado a partir

dos valores dos atributos de um Objeto.


Exemplo :
clculo do salrio lquido do funcionrio.

Servios de Ocorrncia
Referem-se aos "Servios Implcitos" (ex. Criar, Conectar,

Alterar, Acessar, Destruir, etc).


So os servios que obrigatoriamente todos os objetos

devem ter.
No so mostrados nos Diagramas da AOO.

Servios - Tipos

Monitorao
Tratam-se de servios que para serem utilizados precisam

de entradas e/ou sadas externas ao objeto ou os servios que controlam a aquisio de dados de dispositivos.
Estes servios podem precisar de alguns servios

associados, como Iniciar ou Terminar.


Exemplo :
Um caso tpico o servio de gravao de dados em um arquivo, os objetos precisam saber do sistema operacional o nome do Arquivo, o local onde pode-se gravar e se existe espao disponvel.

Notao Grfica - Coad e Yourdan

Nome da Classe
Atributo 1 Atributo 2

Geralmente parte privada

...

Atributo n Servio 1 Servio 2 parte pblica

...

Servio n

Notao Grfica - Coad e Yourdan

Funcionrio
Nome Residncia Salrio Bruto Faltas
Clculo Salarial Imprimir Dados
AlterarEndereo RetirarFuncionrio CriarNovo

Slvio
Abravanel Santos Rua de Baixo, 13
1000.00 1

Notao Grfica - UML

Nome da Classe
- Atributo 1 - Atributo 2: tipo

...

# Atributo n: tipo=valor

# Servio 1() + Servio 2(): retorno

...

+ Servio n(param: tipo)

Visibilidade: - privado + pblico # protegido

Notao Grfica - UML - Exemplo

Funcionrio
Nome:texto Residncia:texto Salrio Bruto:real Faltas:inteiro Clculo Salarial():real Imprimir Dados() SetResidencia(R:Residencia) GetFaltas():faltas ApagarFuncionrio() CriarNovo()

Classes devem ser nomeadas usando o vocabulrio do domnio


Padres de

nomenclatura devem ser estabelecidos Ex: Todos os nomes de classes so substantivos no singular, iniciando com letra maiscula

Classes outro exemplo

Veiculo
placa: string cor:integer chassis:string consumoCombustvel()

24/105

Mensagens
uma forma de relacionamento entre objetos; atravs delas que os objetos interagem (se comunicam) em um programa. Tratam-se de pedidos enviados a um objeto, a fim de que este modifique seu estado ou retorne algum valor. Em um programa orientado a objeto, nenhuma outra parte do programa pode acessar diretamente os dados de um objeto. Toda a comunicao entre os objetos ocorre nica e exclusivamente atravs de mensagens.

Mensagens
Uma mensagem uma solicitao feita por um objeto A a um objeto B; Como resultado desta solicitao, o objeto B ir modificar seu estado ou ir retornar algum valor; O conceito de mensagem est diretamente associado ao conceito de operao; A interao entre os objetos feita atravs da troca de mensagens; So representados na UML atravs dos diagramas de iterao e de colaborao.

26/105

Mensagens
Na loja comercial pode-se ter um objeto responsvel pela Administrao. No final do ms a Administrao ter como atribuio, saber os valores a serem pagos aos funcionrios para que posso efetivar o pagamento e debitar o total do Caixa da Empresa. Para isto ela ter que enviar mensagens para os funcionrios (cada um dos objetos que os representam) e aguardar a resposta referente ao valor do salrio, conta bancria, nome, etc. Assim, poder continuar seu processamento de atualizao do caixa.

Relacionamentos

Relaes fornecem um caminho para a comunicao entre os objetos


Diagramas de sequncia e/ou colaborao so examinados para determinar quais ligaes entre objetos precisam existir para se chegar ao comportamento desejado. -- Caso dois objetos precisem conversar dever haver uma ligao entre elas

28/105

Relacionamentos

Associao:
uma conexo bi-direcional entre classes

mostrada como uma linha conectando as

classes relacionadas

Agregao:
um tipo mais forte de conexo, especializao

de uma associao, aonde a relao entre o todo e suas partes (relacionamento parte-de ou conteno) mostrada como uma linha conectando as classes relacionadas com um losango perto da classes que representa o todo

29/105

Relacionamento entre Classes

Herana:
um dos princpios da OO, permite a reutilizao,

uma nova classe pode ser definida a partir de outra j existente

Dependncia:
uma forma mais fraca de relao, mostrando uma

relao entre um cliente e um fornecedor, aonde o cliente no tem conhecimento semntico do fornecedor
mostrada como uma linha pontilhada entre o

cliente e o fornecedor
30/105

Associaes

Uma associao uma conexo entre classes Associaes so representadas em um diagrama de classe atravs de uma linha conectando as classes associadas. Os dados podem fluir em uma ou em ambas as direes atravs do link.
Professor Aluno

31/105

Nomeando uma Associao


Para facilitar seu entendimento, uma associao precisa ser nomeada O nome representado como um rtulo colocado ao longo da linha de associao Um nome de associao usualmente um verbo ou uma frase verbal

Professor d aula para

Aluno

32/105

Definindo papis (roles)


Um papel define o propsito ou capacidade que uma classe Nomes de papis so tipicamente substantivos Um papel colocado ao longo da linha de associao prximo classe que ele modifica

Um ou ambos finais de uma associao pode ter papis

Pessoa Professor

Turma

33/105

Navegao

Apesar de associaes e agregaes serem bi-direcionais por definio, frequentemente desejvel restringir a navegao em uma nica direo
Caso a navegao seja restringida, uma seta

adicionada para se indicar a direo da navegao

34/105

Tipos de Navegao

Classe A
ou

Classe B
unidirecional

Classe A

Classe B
bidirecional

Classe A

Classe B

bidirecional ou no determinada

35/105

Navegao

Uma associao usualmente um relacionamento bidirecional


Dado uma instncia de Professor, h um objeto Aluno

associado Dado uma instncia de Aluno, h um objeto Professor associado Professor Aluno

36/105

Mltiplas Associaes
Mais que uma associao podem existir entre duas classes Se h mais que uma associao entre duas classes, ento elas precisam ser nomeadas

Professor

d aula para tem aula com

Aluno

37/105

Multiplicidade para Associaes


Multiplicidade o nmero de instncias de uma classe relacionada com uma instncia de outra classe Para cada associao, h duas decises a fazer: uma para cada lado da associao Por exemplo, na conexo entre Professor e Aluno:

Para cada instncia de Professor, podem ocorrer

muitos (zero ou mais) Alunos Para cada instncia de Aluno, pode ocorrer exatamente um Professor (pensando em um curso isolado)
38/105

Indicadores de Multiplicidade
Muitos
Exatamente um Zero ou mais Um ou mais Zero ou um Faixa especificada Pessoa Professor
1 1..*

*
1
0..

* *

1..

0..1 2..4

Turma

39/105

Associaes - Exemplo

Proprietario nome:char[80] endereco:char[80] cnh:integer

possui

*
veiculo chapa:char[8] cor:integer chassis:char[30]

40/105

Herana

um mecanismo de hierarquia entre classes, onde uma classe mais especializada (filho) herda as propriedades da classe mais geral (pai). Este recurso no est disponvel em sistemas procedurais, caracterizando-se em uma das principais diferenas entre a Anlise Orientada a Objetos e a Anlise Estruturada.
A classe mais geral denominada superclasse e a classe mais especializada chamada subclasse.

Herana
Herana uma relao entre uma superclasse e suas subclasses; A subclasse est subordinada a superclasse na hierarquia de classes. H duas formas de se descobrir heranas:

Generalizao Especializao

Herana sempre ocorrem de classe para classe; Herana representa um relacionamento " um tipo de". Assim, a partir da estrutura de Especializao, diz-se que esta " um tipo da" estrutura de Generalizao.

Herana

Atributos comuns, operaes, relaes e/ou, so mostradas no nvel aplicvel mais alto da hierarquia Ao se definir a hierarquia, deve-se ter em mente a premissa bsica de que as categorias inferiores sempre satisfazem todos os atributos e servios das categorias s quais elas representam especializaes.

Uma classe filha deve ter, no mnimo, uma propriedade de distino em relao classe pai.

Herana - Exemplo

Olhando o caso da loja comercial, onde tinhamos somente a classe Funcionrio. Se houver a necessidade de se guardar dados de Clientes que fizeram compras. Precisamos criar um classe Clientes, cujos dados necessrios seriam : nome, endereo, valor da compra, tem comprado, etc. E partir desta classe criariamos objetos como o, cliente_0001, que poderia ter os valores : Joo das Couves (nome), Rua das Verduras, s/n, R$ 0.10, chiclete.

Herana: Exemplo Funcionrio


Nome Endereo Salrio Faltas CalcularSalario( Mostrar()
Nome Endereo Salrio Faltas CalcularSalario() Mostrar() Compra TipoPagamento GerarRecibo() Mostrar()

Cliente
Nome Endereo Compra TipoPagamento GerarRecibo() Mostrar()

Herana: Exemplo Pessoa


Nome Endereo Mostrar()

Funcionrio
Salrio Faltas
CalcularSalario() Mostrar()

Cliente
Compra TipoPagamento GerarRecibo() Mostrar()

Herana

veiculo
chapa:char[8] cor:integer chassis:char[30]

carga
peso_max:integer alt_max:integer comp_max:integer

passageiros
pass_max:integer

47/105

Conceitos chaves

Conceitos Chaves da Orientao a Objetos (continuao)


Abstrao Encapsulamento Polimorfismo Persistncia

Abstrao

50/105

Abstrao

Nesta fase tenta-se retirar elementos e requisitos que iro ajudar na resoluo de um problema; o processo de retirar do domnio do problema os detalhes relevantes e representlos no mais em uma linguagem do domnio e sim na linguagem da soluo.
O sucesso de um Programa Orientado a Objeto est condicionado a uma boa abstrao do problema.

Abstrao

No paradigma da Programao Estruturada identifica-se as funes como sendo "operaes abstratas que resolvem um problema de programao", ou seja, ocorre a abstrao de procedimentos. No paradigma da Orientao a Objetos, temse a Abstrao de Dados, onde uma estrutura de dados deve incluir as operaes que ocorrem com ela.

Abstrao

Este conceito est relacionado s atividades de Modelagem de Negcio, Requisitos, Analise e Projeto nas fases de Concepo e Elaborao de um ciclo de vida iterativo;

e representado, principalmente, pelo diagrama de Use Case (Caso de Uso) da UML.

Ciclo de vida iterativo

Estrutura do RUP (rational unified process) Fases

Fluxo de Trabalho de Processo Concepo Elaborao

Construo

Transio

Modelagem Negcios Requisitos Anlise e Projeto Implementao Teste Distribuio


Fluxo de Trabalho de Suporte

Ger. Verses Gerenciamento Ambiente


Iteraes Iter. #1 Iter. #2 Iter. #n Iter. Iter. #n+1 #n+2 Iter. #m Iter. #m+1

Iteraes

Abstrao

Em conjunto com a abstrao temos o conceito, a prototipagem, isto , faz-se uma primeira anlise, abstraindo-se ao mximo que se puder.
Parte-se para a parte de programao, no sentido de se construir um prottipo do sistema. Com o prottipo em mos volta-se a fase da abstrao. E fica-se interagindo entre prottipoabstrao at que a Anlise esteja completa.

Conceitos Chaves da Orientao a Objetos (continuao)


Abstrao Encapsulamento Polimorfismo Persistncia

Encapsulamento

a propriedade de se implementar dados e

procedimentos correlacionados em uma


mesma entidade (objeto).

Trata-se de uma das principais vantagens da Programao Orientada a Objetos sobre a Programao Estruturada, principalmente na

reutilizao de cdigos.

Encapsulamento

Pode-se entender intuitivamente o significado de encapsulamento quando se observa o mundo real. Nos objetos do mundo real, atributos e aes so inerentes ao prprio objeto.
Exemplo :
A um automvel esto associados tanto atributos

(modelo, kilometragem, cilindradas, capacidade do tanque de combustvel, etc), quanto suas potencialidades (velocidade mdia, consumo de combustvel, etc).

Continuao Conceitos Chaves da Orientada a Objetos


Abstrao Encapsulamento Polimorfismo Persistncia

Polimorfismo

O significado da palavra, originada do grego, o de "possuir vrias formas". Na A.O.O. usado para indicar a propriedade de se utilizar o mesmo nome para mtodos diferentes. Uma vantagem do polimorfismo a relativa facilidade de manuteno e extenso dos programas. A idia de polimorfismo est ligada com a indicao de que os atributos s devem ter seus valores alterados por mtodos da classe.

Polimorfismo

Uma das estratgias adotadas na Programao Orientada a Objeto a de implementar os mtodos o mais alto possvel na hierarquia de classes. As variaes necessrias nos mtodos so feitas a medida em que se desa a rvore hierrquica. Podemos entender como um exemplo um objeto chamado Automvel, que tem dois descendentes: Carro e Moto. O Objeto Automvel tem um mtodo chamado ligar, que todo automvel possui. Os objetos Carro e Moto tambm tm o mtodo ligar, porm com implementaes diferentes entre si.

Polimorfismo
ClasseBase Mostrar() ClasseD1 Mostrar() ClasseD2 Mostrar() ClasseD3 objGeral.mostrar();
62/105

Mostrar()

Polimorfismo
ClasseBase Mostrar() ClasseD1 Mostrar() ClasseD2 Mostrar() ClasseD3 objGeral.mostrar();
63/105

Mostrar()

Polimorfismo
ClasseBase Mostrar() ClasseD1 Mostrar() ClasseD2 Mostrar() ClasseD3 objGeral.mostrar();
64/105

Mostrar()

Polimorfismo
ClasseBase Mostrar() ClasseD1 Mostrar() ClasseD2 Mostrar() ClasseD3 objGeral.mostrar();
65/105

Mostrar()

Polimorfismo
ClasseBase Mostrar() ClasseD1 Mostrar() ClasseD2 Mostrar() ClasseD3 objGeral.mostrar();
66/105

Mostrar()

Continuao Conceitos Chaves da Orientao a Objetos

Abstrao Encapsulamento Polimorfismo Persistncia

Persistncia

O termo persistncia est relacionado ao total de tempo que um objeto permanece na memria. De modo geral, as instncias das classes so criadas durante a execuo do programa e assim que o objeto no mais necessrio, ocorre uma destruio do mesmo, ou seja, o espao de memria reservado para ele liberado.

Persistncia
Um objeto em um Programa Orientado a Objetos surge das seguintes formas : a) O objeto criado esttica ou dinamicamente pelo programa. b) O objeto recuperado de um arquivo ou de uma base de dados relacional e levado forma de objeto. c) O objeto recuperado de uma base de dados orientada a objeto e lido diretamente para utilizao.

Exerccio 1 :

A empresa de aviao VAF resolveu criar um Sistema de Transporte Areo em Tempo Real para automatizar o planejamento de vos e transporte de passageiros. As nicas informaes relevantes para a construo de um prottipo so as seguintes :

Exerccio 1 :
1) Os itens a serem transportados, o qual esto includos os passageiros (nome, poltrona, nmero, origem, destino) e os itens de carga (peso, dimenses, descrio, nmero, origem, destino). 2) Avio, ao qual esto associados : cdigo de identificao, modelo, capacidade de carga , autonomia de vo. Como estas informaes poderiam ser representadas com Estruturada e com Orientao a Objetos?

Exerccio 2 :

O curso de especializao AFaz de Conta ir implementar um sistema de cadastro de informaes. Os dados de interesse para os alunos so nome, endereo, matricula e disciplina matriculadas. Os dados referentes aos professores so nome, endereo, data de admisso, turno, disciplinas lecionadas. As disciplinas devem ter informaes sobre nome, cdigo, horrio, sala e crditos.

Exerccio 2

Todo professor deve receber uma remunerao e os dados referentes a ela so salrio bruto, gratificao, descontos. Os alunos precisam pagar uma mensalidade de acordo com o numero de crditos cursados.

A administrao do curso deve calcular os gastos


mensais (levar em conta que a nica despesa com salrio de professores e os crditos so referentes as

mensalidades dos alunos.

Como estas informaes poderiam ser representadas com Estruturada e com Orientao a Objetos?

Potrebbero piacerti anche