Buscar

Conceitos OO

Prévia do material em texto

Conceitos OO
Engenharia de Software II 
!
profa. Ana Marcia Debiasi Duarte
O que influenciou a criação 
da OO
• Avanços na tecnologia de arquiteturas de 
computadores, suportando sofisticados ambientes de 
programação e interfaces homem máquina. 
• Avanços na área de linguagens de programação 
como modularização, ocultamento de informação, etc. 
• Crise do Software: termo utilizado para descrever 
problemas associados ao modo como o software é 
desenvolvido, como é feita a manutenção e como 
acompanhar a demanda por mais software.
Vantagens
• Facilita a reutilização de código; 
• Os modelos refletem o mundo real de maneira mais 
aproximada: 
• Descrevem de maneira mais precisa os dados; 
• A decomposição é baseada em um particionamento natural; 
• Mais fáceis de entender e manter. 
• Pequenas mudanças nos requisitos não implicam em 
alterações massivas no sistema em desenvolvimento. 
• Implementação de Tipos Abstratos de Dados
O que é OO
• É um paradigma para o desenvolvimento de software 
que baseia-se na utilização de componentes 
individuais (objetos) que colaboram para construir 
sistemas mais complexos. A colaboração entre os 
objetos é feita através do envio de mensagens. 
• Um paradigma é um conjunto de regras que 
estabelecem fronteiras e descrevem como resolver 
problemas dentro desta fronteira. Um paradigma 
ajuda-nos a organizar a e coordenar a maneira como 
olhamos o mundo.
O que é OO
• O paradigma de objetos baseia-se nos seguintes 
conceitos: 
• Objetos 
• Classes 
• Herança 
• Polimorfismo
Abstração
Abstração
• Processo de identificar o que é necessário, deixando os detalhes de lado. 
• Na terminologia filosófica, a abstração é o processo de pensamento onde as 
idéias são distanciadas dos objetos.3 A abstração usa a estratégia de 
simplificação, em que detalhes concretos são deixados ambíguos, vagos ou 
indefinidos; assim uma comunicação efetiva sobre as coisas abstraídas 
requerem uma intuição ou experiência comum entre o comunicador e o 
recipiente da comunicação. Isso é verdade para todas as formas de 
comunicação verbal/abstrata. 
• O uso da abstração na computação pode ser exemplificada da seguinte 
forma: Imagine que um determinado processamento é realizado em vários 
pontos de um sistema, da mesma forma ou de forma idêntica. Ao invés de 
repetirmos o trecho de código responsável por este processamento, o 
abstraímos na forma de um procedimento ou função, e apenas fazemos uma 
chamada à tal procedimento, onde quer que necessitemos e por quantas 
vezes se fizer necessário
Objetos
• Informalmente um objeto representa uma entidade, tanto 
física quanto conceitual ou de software. 
• Exemplos: 
• Entidade Física: caminhão, carro, bicicleta, etc. 
• Entidade Conceitual: processo químico, matrícula, etc 
• Entidade de Software: lista encadeada, arquivo, etc. 
• Podemos afirmar que um objeto é um conceito, abstração, 
ou entidade com limites bem definidos e um significado 
para a aplicação.
Objetos
Objetos - Encapsulamento
• Atributos e operações de um objeto devem estar 
armazenados no próprio objeto. Dizemos então que 
eles estão encapsulados no objeto.
• O objetivo do encapsulamento é 
proteger os dados do acesso 
descontrolado. O acesso é feito através 
de mensagens trocadas entre os 
objetos. 
• As operações são como serviços que 
os objetos fornecem ao mundo exterior.
Objetos
• Formalmente, um objeto é algo que possui: 
• um estado que é normalmente implementado através de seu conjunto 
de propriedades (denominadas atributos), com os valores das 
propriedades, mais as ligações que o objeto pode ter com outros 
objetos; 
• uma identidade única. Identidade é a propriedade de um objeto que 
distingue-o de outros objetos. Identidade não é o nome do objeto, nem 
o endereço de memória onde ele está armazenado, é um conceito de 
linguagens de programação que não é visível para os “usuários”. 
• um comportamento. O comportamento define como um 

objeto reage às requisições de outros objetos,em termos de 

mudanças de mudanças de estado e passagem de mensagens. 
Classes
• É a descrição de um grupo de objetos com 
propriedades similares (atributos), comportamento 
comum(operações) , relacionamentos com outros 
objetos e semânticas idênticas. 
• Todo objeto é instância de uma classe 
• Enquanto um objeto individual é uma entidade 
concreta que executa algum papel no sistema, 
uma classe captura a estrutura e comportamento 
comum a todos os objetos que estão relacionados
Classes
• Uma classe define a estrutura e o comportamento 
de qualquer objeto da classe, atuando como um 
padrão para a construção de objetos. 
• Os objetos são agrupados em classes:
Pessoa
nome: string 
idade: inteiro
calcular_idade()
(pessoa) 
João
(pessoa) 
Romário
(pessoa) 
Clarissa
Identificação
Atributos
Métodos
Classes
• A definição da classe consiste na definição dos 
atributos e operações dos objetos desta classe; 
• Um atributo é uma característica de uma classe. 
Atributos não apresentam comportamento, eles 
definem a estrutura da classe 
• Operações caracterizam o comportamento de um 
objeto, e são o único meio de acessar, manipular e 
modificar os atributos de um objeto.
Herança
• É um mecanismo existente no paradigma orientado a 
objetos que permite a reutilização da estrutura e do 
comportamento de uma classe ao se definir novas 
classes;
• A herança também é conhecida 
como relacionamento “é-um”; 
• A classe que herda o comportamento 
é chamada de subclasse e a que 
definiu o comportamento 
superclasse. Especialização Generalização
Herança
Herança Múltipla
• É a possibilidade de se definir uma com mais de uma 
superclasse
Polimorfismo
• É a habilidade de variáveis terem “mais de um tipo”. 
Funções são ditas polimórficas quando seus operandos 
podem ter mais de um tipo. 
!
!
!
• Assim, pode-se adicionar um comportamento específico 
(implementação) às subclasses de uma hierarquia de 
generalização / especialização.
Relacionamentos entre 
Classes
• Associação: É uma conexão entre classes, e 
também significa que é uma conexão entre objetos 
daquelas classes. Em UML, uma associação é 
definida com um relacionamento que descreve 
uma série de ligações, onde a ligação é definida 
como a semântica entre as duplas de objetos 
ligados. 
Relacionamentos entre 
Classes
• Generalização: É um relacionamento de um 
elemento mais geral e outro mais específico. O 
elemento mais específico pode conter apenas 
informações adicionais. Uma instância (um objeto 
é uma instância de uma classe) do elemento mais 
específico pode ser usada onde o elemento mais 
geral seja permitido.
Relacionamentos entre 
Classes
• Dependência e Refinamentos: Dependência é 
um re lacionamento entre e lementos, um 
independente e outro dependente. Refinamento é 
um relacionamento entre duas descrições de uma 
mesma entidade, mas em níveis diferentes de 
abstração.
Associações Normais
• O tipo mais comum de associação é apenas uma 
conexão entre classes. É representada por uma 
linha sólida entre duas classes. A associação 
possui um nome (junto à linha que representa a 
associação), normalmente um verbo, mas 
substantivos também são permitidos.
Associações Normais
• Para expressar a multiplicidade entre os 
relacionamentos, um intervalo indica quantos 
objetos estão relacionados no link. O intervalo 
pode ser de zero para um (0..1), zero para vários 
(0..* ou apenas *), um para vários (1..*), dois (2), 
cinco para 11 (5..11) e assim por diante. É também 
possível expressar uma série de números como (1, 
4, 6. .12) . Se não for descr i to nenhuma 
multiplicidade, então é considerado o padrão de 
um paraum (1..1 ou apenas 1).
Associações Normais
No exemplo acima vemos um relacionamento entre 
as classes Cliente e Conta Corrente se 
relacionam por associação. 
Associação Recursiva
É possível conectar uma classe a ela mesma através de uma 
associação e que ainda representa semanticamente a 
conexão entre dois objetos, mas os objetos conectados são 
da mesma classe. Uma associação deste tipo é chamada de 
associação recursiva. 
Associação Exclusiva
Em alguns modelos nem todas as combinações são válidas, e isto 
pode causar problemas que devem ser tratados. Uma associação 
exclusiva é uma restrição em duas ou mais associações. Ela 
especifica que objetos de uma classe podem participar de no 
máximo uma das associações em um dado momento. Uma 
associação exclusiva é representada por uma linha tracejada entre as 
associações que são parte da associação exclusiva, com a 
especificação "{ou}" sobre a linha tracejada. 
Associação de Classe
Uma classe pode ser associada a uma outra associação. Este tipo de 
associação não é conectada a nenhuma das extremidades da 
associação já existente, mas na própria linha da associação. Esta 
associação serve para se adicionar informações extra a associação já 
existente. 
A associação da classe Fila com a associação das classes Cliente e 
Processo pode ser estendida com operações de adicionar processos 
na fila, para ler e remover da fila e de ler o seu tamanho. Se 
operações ou atributos são adicionados a associação, ela deve ser 
mostrada como uma classe.
Associação Ternária
Mais de duas classes podem ser associadas entre si, a associação 
ternária associa três classes. Ela é mostrada como um grade losango 
(diamante) e ainda suporta uma associação de classe ligada a ela, 
traçaria-se, então, uma linha tracejada a partir do losango para a 
classe onde seria feita a associação ternária. No exemplo acima a 
associação ternária especifica que um cliente poderá possuir 1 ou 
mais contratos e cada contrato será composto de 1 ou várias regras 
contratuais.
Agregação
Indica que um elemento é parte ou está contida em outra classe. 
Representa uma relação do tipo parte/todo. 
No exemplo acima um atleta é parte de um time. Significa também 
que o atleta pode fazer parte de diferentes times dependendo do 
momento.
Composição
É uma agregação mais forte, a existência do Objeto-Parte NÃO faz 
sentido se o Objeto-Todo não existir. 
Não faz sentido existirem itens do pedido sem existir um pedido onde 
tais itens estariam contidos. Eles só existem se existir um pedido do 
qual eles fazem parte. Se o pedido é destruído, todos os seus itens 
também são.
Generalização
Na generalização normal a classe mais específica, chamada de 
subclasse, herda tudo da classe mais geral, chamada de 
superclasse. Os atributos, operações e todas as associações são 
herdadas. 
Multiplicidade
Multiplicidade
• Define a quantidade de instâncias de um objeto 
que uma classe pode ter em relação a outra 
classe.
1 para 1
• As Classes A e B devem ter apenas uma 
ocorrência do objeto definido pela classe da outra 
extremidade.
1
1
Classe A
Classe B
1 para N
• A Classe A deve ter no mínimo UMA e no máximo 
N ocorrências do objeto definido pela Classe B. 
• A Classe B deve ter pelo menos UMA ocorrência 
do objeto definido pela classe A.
1..*
1
Classe A
Classe B
0 ou 1 para 1
• A Classe A pode ter NENHUMA ou no máximo 
UMA ocorrência do objeto definido pela Classe B. 
• A Classe B deve ter pelo menos UMA ocorrência 
do objeto definido pela classe A.
0..1
1
Classe A
Classe B
0 ou N para 1
• A Classe A pode ter NENHUMA ou no máximo N 
ocorrências do objeto definido pela Classe B. 
• A Classe B deve ter pelo menos UMA ocorrência 
do objeto definido pela classe A.
0..1
1
Classe A
Classe B
1 ou N para 1 ou N
• As Classes A e B devem ter pelo menos UMA e no 
máximo N ocorrências do objeto definido pela 
outra Classe.
0..1
1
Classe A
Classe B
Fim

Continue navegando