• Nenhum resultado encontrado

OODClasse

N/A
N/A
Protected

Academic year: 2021

Share "OODClasse"

Copied!
76
0
0

Texto

(1)

Engenharia de Software Orientada a

objetos

Prof. Rogério Celestino dos Santos

(2)

Bases da OO

 Na compreensão do mundo, os seres humanos utilizam-se de três métodos de organização dos pensamentos:

 Diferenciação

 Distinção entre todo e parte

 Classificação

 Vê a orientação a objetos, como técnica para

modelagem de sistemas, utiliza estes métodos para diminuir a diferença semântica entre a realidade e o modelo

(3)

Exemplo

(4)

Conceitos

 Objetos e Instâncias

Classes

Atributos

Métodos

Visibilidade de atributos e operações

(5)

Objeto

 Um objeto denota uma entidade, seja ela de natureza física, conceitual ou de software

 Entidades físicas: um carro, uma pessoa, uma casa

 Entidade conceitual: um organograma de uma Empresa

(6)

Objeto

 É uma entidade capaz de reter um estado

(informação/atributos/propriedades) e que oferece uma série de operações (comportamentos/métodos) ou para examinar ou para afetar este estado

Um objeto é um conceito, uma abstração, algo com

limites e significados nítidos em relação ao domínio de uma aplicação

Objetos facilitam a compreensão do mundo real e

oferecem uma base real para implementação em computador

(7)

Objeto

 Um objeto é algo que tem:

 Estado

 Comportamento

(8)

Estado de um Objeto

 O estado de um objeto representa uma das possíveis condições em que um objeto pode existir

O estado é representado pelos valores das

propriedades de um objeto em um determinado instante

O estado do objeto usualmente muda ao longo do

tempo:

 Exemplo (Aluno Maurício):

 Nome: Maurício

 Matrícula: 105018

(9)

Comportamento de um Objeto

 O comportamento determina como um objeto pode responder a interações mediante à ativação de

operações decorrentes de mensagens recebidas de outros objetos

O Comportamento é determinado pelo conjunto de

operações que o objeto pode realizar.

 Controle Acadêmico

 Maurício

 Solicita matrícula

(10)

Identidade de um Objeto

 Cada objeto tem um único identificador, mesmo que seu estado seja idêntico ao de outro objeto

 Maurício (objeto)

 Controle Acadêmico (Sistema que está sendo construído)

 Semestre (estado)

 Matrícula 105018 (Propriedade de um aluno)

 Lista de Semestres Cursados (candidato a objeto)

(11)

Classe

 Uma classe é a descrição de um grupo de objetos com propriedades Semelhantes (atributos), mesmo comportamento (operações), mesmos

relacionamentos com outros objetos (associações e agregações), e mesma semântica

(12)

Exemplos de Classes

 Professor

 Atributos: Nome, Matrícula, Data de Contratação, Titulação

 Operações: DefineNome(), AlteraNome(),

TempoServiço(), DefineTitulação(), AlteraTitulação(), ...

Turma:

 Atributos: Cod, Nome, Local, Créditos, Horário, Capacidade

 Operações: DefineCod(), AlteraCod(), DefineNome(), AlteraNome(), NrCreditos(), AdicionaAluno(),

(13)

Classe

 Encontrando Classes

 Uma classe deveria capturar uma e somente uma abstração chave

 Abstração ruim: classe "Aluno" que conhece a informação do aluno e as disciplinas que aquele aluno está matriculado

 Boa abstração: separar em uma classe para Aluno e uma classe para Disciplina

(14)

Classe

 Nomeando Classes

 Uma classe deveria ser um substantivo singular que melhor caracteriza a abstração

 Dificuldades na nomeação das classes podem indicar abstrações mal definidas

 Nomes deveriam surgir diretamente do domínio do problema

(15)

Classe

 Estilo para Nomear Classes

 Um guia de estilo deveria ditar convenções de nomeação para classes

 Uma proposta simples:

 Classes são nomeadas com um substantivo no singular

 O nome de uma classe inicia com a primeira letra maiúscula

 Não são utilizados símbolos de sublinhado ("_") - nomes compostos de múltiplas palavras são

(16)

Atributo

 O estado de um objeto é dado por valores de

atributos e por ligações que tem com outros objetos

Todos os objetos de uma classe são caracterizados

pelos mesmos atributos, ou variáveis de instâncias

 O mesmo atributo pode ter valores diferentes de objeto para objeto

(17)

Atributo

 Atributos são definidos ao nível da classe, enquanto que os valores dos atributos dos atributos são

definidos ao nível do objeto

Exemplos:

 uma pessoa (classe) tem os atributos nome, data de nascimento e peso

 João é uma pessoa (objeto da classe pessoa) com

 nome "João da Silva“

 data de nascimento "18/03/1973"

(18)

Métodos

 O comportamento invocável de objetos são os métodos

Um método é algo que se pode pedir para um objeto

de uma classe fazer

 Objetos da mesma classe tem os mesmos Métodos

Métodos são definidos ao nível de classe, enquanto

que a invocação de uma operação é definida ao nível de objeto

(19)

Construtor

 É um método utilizado para inicializar objetos da classe quando estes são criados

Este método possui o mesmo nome da Classe e não

(20)

Visibilidade de atributos e métodos

 Atributos e Métodos Públicos

 São atributos e métodos dos objetos que podem ser visíveis externamente, ou seja, outros objetos poderão acessar os atributos e métodos destes objetos sem restrições

Atributos e Métodos Privados

 Atributos e métodos que só podem ser acessados por operações internas ao próprio objeto são ditos privados

(21)

Métodos

 Interface

 Os métodos públicos de uma classe definem a interface da classe.

 Os métodos privativos não fazem parte interface da classe pois não pode ser acessada externamente

Assinatura

 Deve ser definido o nome dos métodos, se tem tipo de retorno, e se recebe parâmetros, a este conjunto de informações sobre o método dá-se o nome de

(22)

Mensagens

 Uma mensagem é uma solicitação feita por um objeto A à um objeto B

Como resultado desta solicitação, o objeto B irá

modificar seu estado ou irá retornar algum valor

 O conceito de mensagem está diretamente associado ao conceito de operação

A interação entre os objetos é feita através da troca

(23)

Herança e Hierarquia

 Hierarquia

 Quando vamos trabalhar com um grande conjunto de classes de objetos, é necessário organizar estas

classes de maneira ordenada de modo que tenhamos uma hierarquia

 Em uma hierarquia de classes teremos as classes mais genéricas no topo, e as mais específicas na base

(24)

Hierarquia

 Automóveis

 automóveis utilitários (camionetes leves)

 utilitários urbanos  utilitários off-road  automóveis de passeio  passeio família  passeio esportivo  automóveis de carga  carga inflamáveis

(25)

Herança e Hierarquia

 Herança

 Em uma hierarquia de classes semelhantes podemos dizer que as classes mais específicas herdam as

características das mais genéricas, ou seja, todo automóvel de passeio família é um automóvel de passeio

 A classe de nível superior na na associação de

herança é chamada de super-classe e a inferior de sub-classe

(26)

Herança e Hierarquia

 Agregação

Composição

(27)

Agregação / Composição

 É o princípio que permite o desenvolvedor considerar algo muito grande através do enfoque TODO-PARTE

Utilizado para definir regras de negócio

Se a instância do todo for removida, suas partes

também deverão ser removidas (composição)

Se a instância do todo for removida, suas partes não

(28)

Agregação

 Define uma "dependência fraca" entre o todo e suas partes

Se o todo for removido, as suas partes poderão

continuar existindo é um mecanismo que permite a construção de uma classe agregada a partir de outras classes componentes

Usa-se dizer que um objeto da classe agregada

(29)
(30)

Composição

 Define uma "dependência forte" o todo e suas Partes

Se o todo deixar de existir, as suas partes também

(31)
(32)

Herança X Agregação x Composição

 Herança

 "é um tipo de", as propriedades são herdadas de outra classe

 Associação

 "usam um(a)", um objeto envia uma mensagem para outro objeto

 Composição

 "composto por", um objeto é composto por outros objeto

(33)

Abstração

 Abstração é o processo através do qual detalhes são ignorados, para nos concentrarmos nas

características essenciais

A abstração nos leva a representar os objetos de

acordo com o ponto de vista e interesse de quem os representa

(34)

Abstração

 Para descrevermos um automóvel (do ponto de vista de um observador externo), identificamos a cor do

mesmo, o número de portas, o tipo das rodas e pneus

Quando identificamos o automóvel apenas a partir

destas características externas estamos fazendo uma abstração pois uma série de detalhes internos não

(35)

Abstração

 Ex: Ao modelarmos um objeto avião no contexto de um sistema de marcação de passagens aéreas, não vai nos interessar a característica número de turbinas do avião, mas irá nos interessar a característica

número de assentos disponíveis

 Ao ignorarmos algumas características não

relevantes em um determinado contexto, estamos fazendo uma abstração

(36)

Encaplusamento

 É o processo de ocultação das características internas do objeto

O encapsulamento cuida para que certas

características não possam ser vistas ou modificadas externamente

(37)

Encaplusamento

 Exemplo

 Podemos dizer que o motor de um automóvel está encapsulado, pois normalmente não podemos ver ou alterar características do motor

 Podemos então utilizar um automóvel sem conhecer nada das complexidades do motor, que estão

(38)

Encaplusamento

No contexto de uma linguagem OO um objeto pode ser

definido como um conjunto de "funções“ unidas aos dados que elas necessitam

O encapsulamento "protege" os dados que estão "dentro"

dos objetos, evitando assim que os mesmos sejam alterados erroneamente

Os dados só poderão ser alterados pelas "funções“ dos

próprios objetos

As "funções" dos objetos são chamadas de operações ou

(39)

Polimorfismo

 É a capacidade de objetos diferentes reagirem segundo a sua função a uma ordem padrão

O comando "abre", por exemplo, faz um objeto entrar

em ação, seja ele uma janela, uma porta ou uma tampa de garrafa

(40)

Polimorfismo

 Sobrecarga

 Através do mecanismo de sobrecarga, dois métodos de uma classe podem ter o mesmo nome, desde que suas assinaturas sejam diferentes

 Tal situação não gera conflito pois o compilador é capaz de detectar qual método deve ser escolhido a partir da análise dos argumentos do método

(41)

Persistência

 Refere-se à habilidade de um objeto existir além da execução que o criou, ou seja, ser armazenado em memória secundária (permanente ou persistente)

Não é o armazenamento apenas dos atributos

(dados), mas também dos métodos para realizar os acessos

Muito encontrado em sistemas que manipulam banco

(42)

Diagrama de Classes (UML)

Prof. Rogério Celestino dos Santos

(43)

Diferenciação entre classe e objeto

 As classes formam o alicerce do diagrama de classes. Assim, para trabalhar com diagrama de classes, você precisa ter uma noção clara da diferença entre classes e objetos. Portanto:

 Classe é a definição para um recurso. Ela inclui informações que descrevem os recursos de uma entidade e como ela pode ser utilizada

 Objetos, ao contrário, são instâncias de uma classe. Pode-se dizer que um objeto é uma entidade

(44)

Diagrama de Classes

 “O diagrama de classes provavelmente é o diagrama mais utilizado da UML. Na verdade, o diagrama de classes é a ferramenta de modelagem principal para descrever a própria UML.” (PENDER, 2004)

(45)

Diagrama de Classes

 Um diagrama de classes descreve os tipos de objetos presentes no sistema e os vários tipos de

relacionamento estáticos existentes entre eles

Os diagramas de classe também mostram as

propriedades e operações de uma classe e as

restrições que se aplicam à maneira como os objetos estão conectados

(46)

Classes

 Uma classe é descrita por seus aspectos estruturais através de seus atributos e através de seus aspectos comportamentais através de suas operações.

Uma classe (seus atributos e operações) pode ser

detalhada através de sua visibilidade e sua multiplicidade

(47)

Classes

 Uma classe é representada como mostrado no desenho abaixo:

(48)

Operações e Atributos de uma Classe

 Uma classe é definida nos seus aspectos estruturais através de seus atributos e nos seus aspectos

comportamentais através de suas operações

Uma classe não tem necessariamente que

corresponder a uma entidade humana ou, mais

genericamente, a uma entidade com representação física (por exemplo, uma fatura)

 Pode-se representar entidades mais abstratas (por exemplo, venda)

(49)

Atributos de uma Classe

 Tanto nos atributos quanto nas operações de uma classe podem ser especificados detalhes de sua visibilidade e de sua multiplicidade

 A sintaxe básica de um atributo é:

 [visibilidade] nome-do-atributo : [tipo] { =valor-inicial }

 Exemplos:

 + nome : String

 - salario : double = 1000.00

(50)

Operações de uma Classe

 A sintaxe básica de uma operação é:

 [visibilidade] nome-da-operação ( [lista-de-parâmetros] ) : [tipo-retorno]

 Exemplos:

 - mostrar() : void

 + calcularTaxa( valorDolar : double ) : double

(51)

Operações e Atributos Estáticos

 Uma operação ou um atributo que não pertence a

uma instância da classe, mas a classe como um todo é chamado de operação e atributo estático,

espectivamente

Operações e atributos estáticos são ompartilhados

por todas as instâncias da classe, mas não pertence a nenhuma instância

(52)

Visibilidade

 Os atributos e operações de uma classe podem ser especificados para mostrar como a mesma pode ser vista e utilizada pelos outros elementos do sistema

Os níveis de visibilidade para o atributo ou a

operação:

 (+) PÚBLICO:

 Todas as classes visualizam.  (-) PRIVADO:

 Somente a própria classe visualiza.  (#) PROTEGIDO:

 Todas as classes do mesmo pacote e sub-classes visualizam.

(53)

Visibilidade

 Exemplo

 Somente a própria classe tem acesso direto aos atributos do veículo

 Qualquer classe pode ligar ou desligar o veículo

 Somente classes do mesmo pacote ou sub-classes podem acelerar ou frear o veículo.

(54)

Associação

 Outra maneira de se criar um atributo é através de uma associação

Associação é uma linha cheia entre duas classes,

direcionadas da classe de origem para a classe de destino

A direção pode ser nos dois sentidos, o que gera uma

Associação Bidirecional

 Exemplo:

(55)

Associação

 Associação

 Ainda no exemplo:

 Como pode ser visto não deve-se colocar uma associação como atributo, pois a própria associação já nos diz isto

 O código Java ficaria assim:

public class NotaFiscal {

private List listaItemNotaFiscal; ... ...

public class ItemNotaFiscal { private NotaFiscal notaFiscal; ...

(56)

Classes Associativas

 Algumas associações de muitos para muitos exige a

necessidade da criação de uma classe associativa entre as duas classes associadas

No exemplo abaixo existe a classe Paciente com seus atributos e a classe Exame com seus atributos

Do relacionamento entre Paciente e Exame têm-se a data da realização e o diagnóstico.

(57)

Multiplicidade

 A multiplicidade de uma classe é o número de instâncias possíveis que uma classe pode ter considerando uma única instância da outra classe a qual ela é associada. Ou seja, é o número de objetos de uma classe que pode relacionar com um único objeto de uma outra classe

Multiplicidades são números simples ou intervalos de númerosA tabela abaixo exemplifica os tipos comuns de multiplicidades

Pelo menos uma instância. 1..* Zero ou mais instâncias. 0..* Exatamente uma instância. 1 Uma instância opcional. 0..1

(58)

Multiplicidade

No exemplo abaixo, um pedido pode estar vinculado a um único cliente, porém um cliente poderá possuir qualquer quantidade de pedidos

(59)

Dependência

 Uma dependência entre dois elementos existe se mudanças na definição de um elemento podem causar mudanças ao outro

A simbologia adotada é uma linha tracejada ligando

(60)

Agregação – Tipo de associação

 As agregações são um caso especial das associações

 Uma agregação modela um relacionamento tem um (ou parte de, no jargão da UML) entre pares

 Este relacionamento significa que um objeto contém outro.

 No contexto de uma agregação, os objetos podem existir independentemente uns dos outros. Nenhum objeto é mais importante do que o outro no relacionamento

 Um losango aberto simboliza a agregação. O losango toca o objeto que é considerado o todo do relacionamento. O todo é constituído de partes

(61)

Agregação – Tipo de associação

 Como o Banco e Cliente são independentes, eles são pares. Você pode dizer que o objeto Banco e o objeto Cliente são pares, porque os objetos Cliente podem existir independentemente do objeto Banco

Isso significa que se o objeto Banco encerrar suas

operações, os clientes não desaparecerão com o banco. Em vez disso, os clientes podem se tornar clientes de outro banco. Do mesmo modo o cliente pode sacar seus fundos e o banco continuará.

(62)

Composição – Tipo de associação

 A título de exemplo, considere-se os itens (linhas) de uma fatura. Usualmente uma fatura é (ou pode ser) composta por vários itens, cada um deles diz respeito a um produto faturado. Os itens têm seus próprios

atributos (quantidade, preço unitário, descrição do produto, etc.) e entidade própria (é possível distinguir um item de outro na mesma fatura)

Uma possível representação deste domínio é o

diagrama do próximo slide. Uma fatura possui vários itens, mas um item apenas diz respeito a uma fatura. Uma composição tem um losango fechado apontando para a parte contendo o todo.

(63)

Composição – Tipo de associação

 É importante observar que os itens existem apenas enquanto

existir a fatura da qual fazem parte

 Dito de outra forma, uma fatura é uma composição de itens. Se removermos uma fatura, os itens dessa fatura também serão removidos.

 Neste caso temos um tipo de agregação conhecido como Composição.

(64)

Generalização

 Trata-se da ação de uma classe herdar toda a estrutura de uma outra classe.

Uma sub-classe sempre herda de sua super-classe:

 Atributos

 Operações

 Relacionamentos

 Uma sub-classe pode:

 Adicionar atributos e operações

 Adicionar relacionamentos

 Sobrepor (override) operações herdadas

Uma sub-classe sempre herda tudo de sua

(65)

Generalização

ContaCorrente é um tipo de Conta.ContaPoupanca é um tipo de Conta.

(66)

Interfaces

Uma interface é uma coleção de operações que são usadas para especificar um serviço de uma classe.

Graficamente, uma interface é representada como um

círculo (forma icônica).

 Toda interface deve ter um nome que a distingue de outras interfaces

(67)

Interfaces

 Uma interface pode também ser representada como um estereótipo (forma expandida)

 Forma Expandida:

(68)

Interfaces

 Uma interface especifica um contrato de serviço para uma classe, sem detalhar como será sua

implementação

No exemplo a seguir, IPreco especifica esse contrato

e a classe Pedido é responsável pela sua realização

Podemos definir uma interface a qual nomearemos de

IPreco (a letra 'I' foi usada para permitir identificação

(69)

Interfaces

A interface IPreco provê um contrato de definição de preço para a classe Pedido

A classe Pedido, a qual realiza, isto é, provê a implementação concreta da interface IPreco, contém um relacionamento

chamado realização

Neste caso, note que a classe Cliente depende da interface

(70)

Realização

 Uma realização indica que uma classe implementa o comportamento especificado por uma interface

Uma interface pode ser realizada por várias classes

(71)

Classes Abstratas

 Em alguns momentos deseja criar uma classe sem a

implementação de algumas operações ou, simplesmente, não deseja que exista uma instância de determinada classe

 Para dizer que uma classe é abstrata, basta inserir seu nome em itálico

 No exemplo, não teria como dizer que tem uma instância de Conta, mas sim, somente uma

instância de uma de suas sub-classes:

(72)

Regras de Restrições

 Restrições agregam condições entre associações, atributos, operações e classes

Restrições são restrições semânticas anotadas como

expressões booleanas

(73)

Pacotes

 Um pacote é um mecanismo de agrupamento

Pode ser utilizado para agrupar qualquer elemento

UML (como casos de uso, atores, classes, componentes e outros pacotes)

 Geralmente utilizada para especificar uma distribuição lógica

(74)

Pacotes

 Os pacotes em um diagrama de classes são

altamente utilizados, pois, na implementação do

sistema, a organização das classes são sempre feitas utilizando pacotes.

(75)

Notas e Comentários

 Assim como todo diagrama UML pode ser inseridos notas ou comentários

(76)

Considerações

Cuidado

Diagrama de Classes não é um modelo ER

O maior perigo com os diagramas de classes é que

você pode focalizar exclusivamente na estrutura e ignorar o comportamento

Referências

Documentos relacionados

Os membros do Conselho Científico que se encontrem numa das situações de incompatibilidade previstas na lei ou nos Estatutos da Universidade do Minho, suspendem imediatamente o

• São substâncias orgânicas produzidas em determinadas regiões da planta, de onde migram para os locais onde exercem seus efeitos.. • Raizes crescem em direção

Em pacientes que suplementam vitamina C em altas doses, um mecanismo anormal de depuração renal pode resultar em níveis plasmáticos muito elevados, que podem provocar a formação de

Quando estiver pronta, coloca-a num lugar onde possa estar sempre à vista de quem está em casa: para este Tesouro, é a melhor maneira de estar bem

A espectrofotometria é uma técnica quantitativa e qualitativa, a qual se A espectrofotometria é uma técnica quantitativa e qualitativa, a qual se baseia no fato de que uma

Considering all the observations and limitations of the present study, it can be concluded that the municipalities of Southeastern Ceará need to intensify their

Em cada câmara técnica, o resumo de projeto e o projeto técnico-financeiro serão avaliados por uma comissão julgadora composta por pelo menos seis (06) de seus

massa, verniz, registro de esfera, verniz extra rápido, tinta, massa corrida, solvente, trincha,