O documento discute os conceitos e princípios da análise orientada a objetos. Ele define análise como o estudo do domínio de um problema para especificar comportamentos externos. A análise orientada a objetos tem como objetivos formalizar uma visão do mundo real e formalizar a colaboração entre objetos. Ele também descreve princípios como qualquer coisa é um objeto, objetos realizam tarefas através de serviços, classes agrupam objetos similares e classes são organizadas em hierarquias.
2. Conteúdo
Análise Orientada a Objectos
Princípios de OO
Conceitos de OO
3. Análise Orientada a Objectos
Análise é o estudo do domínio de um problema
que leva a uma especificação de
comportamentos observáveis externamente.
Analisar é obter as necessidades de um
sistema e o que este precisa para ser
desenvolvido para satisfazer as
necessidades do usuário.
Analisar não é definir como o sistema será
desenvolvido, mas sim investigar o problema
4. Análise Orientada a Objectos
A AOO tem 2 propósitos:
Formalizar uma “visão” do mundo real
dentro do qual o sistema será
desenvolvido, estabelecendo os
objectos que servirão como principais
estruturas organizacionais do sistema
de software e também as que o
mundo real impõe.
Formalizar a colaboração de um dado
conjunto de objectos na execução do
trabalho do sistema de software que
está sendo especificado.
5. Princípios de OO
De acordo com Bezerra (2003) os princípios de
OO são os seguintes:
Qualquer coisa é um objecto.
Objectos realizam tarefas através da
requisição de serviços a outros objectos.
Cada objecto pertence a uma determinada
classe. Uma classe agrupa objectos
similares.
A classe é um repositório para
comportamento associado ao objecto.
Classes são organizadas em hierarquias.
6. Conceitos de OO
Alguns conceitos básicos de OO a
considerar:
Objectos
Atributos e Métodos
Classes e Instâncias
Estado
Sintaxe
Abstracção
Encapsulamento
Herança
Polimorfismo
7. Objectos
Um objecto é qualquer coisa real ou
abstracta, a respeito da qual
armazenamos dados e os métodos que
os manipulam.
Cada objecto é responsável por realizar
tarefas específicas. É através da
interacção entre objectos que uma tarefa
computacional é realizada.
8. Atributos e Métodos
Um objecto possui um
agrupamento de características
e acções.
Cada característica é
representada como um atributo
do objecto.
Os métodos são utilizados para
representar as acções do
objecto.
9. Classes e Instâncias
Todos os objetos são instâncias de
uma classe.
Classe é uma descrição dos
atributos e serviços comuns a um
grupo de objectos.
Classe = molde a partir do qual
constroem-se objectos.
10. Cont (Classes e Instâncias)
Classes são definições e podem
ser imaginadas como uma
coleção de vários objectos.
Cada objecto é uma linha de
vida à parte e cada um possui
um estado específico.
11. Trabalho em Grupos de 2
Dê 5 exemplos de 3 classes diferentes;
Qual é a relação que existe entre
classe e objecto?
Para cada classe dada em 1, liste 3
atributos, 2 métodos e mostre 3
objectos;
Declare a classe Rectangulo em JAVA,
com seus atributos e métodos;
Crie 2 objectos da classe Rectangulo e
implemente os métodos nele contidos.
12. Estado
Estado = conjunto de valores
dos atributos e o status das
operações que o objecto
executou.
Um método que o objecto
executa ou a mudança de valor
de algum atributo,
automaticamente muda o seu
estado anterior.
13. Sintaxe
É conveniente que métodos
sejam representados pelo nome
do método seguido de abre e
fecha parênteses.
Exemplo: inscreverEstudante()
14. Abstracção
Abstracção é o princípio de ignorar
os aspectos de um assunto não
relevante para o propósito em
questão, tornando possível uma
concentração maior nos assuntos
principais [Cood, 1991].
Consiste na selecção que o
analista faz de alguns aspectos,
ignorando outros.
16. Abstracção de Procedimentos
Consiste em considerar um
procedimento com uma operação
bem definida como algo único,
mesmo que utilize outros
procedimentos internos.
Usamos abstracção de
procedimentos quando uma função
divide-se em outras sub-funções,
que por sua vez decompõem-se em
outras funções.
17. Abstracção de Dados
Consiste em definir um tipo de
dado conforme as operações
aplicáveis aos objectos deste
tipo.
Porém, estes objectos só
podem ser
modificados e observados
através destas operações.
18. Abstracção de Dados
A manipulação de dados é
realizada apenas através de
métodos .
Um exemplo é classificar uma
lista a partir das operações
aplicadas a ela, como inserção
e remoção. Qualquer objecto
do tipo lista só pode sofrer
modificações através dessas
operações.
19. Encapsulamento
O encapsulamento de informação é o
processo de “esconder/ocultar” os
detalhes (dados) de concepção e
implementação e oferecer uma interface
comum aos objectos (métodos).
O objecto comunica-se com o exterior
(com outros objectos) através de um
conjunto de operações que constituem a
interface do objecto.
20. Encapsulamento
É permitido ao usuário ver apenas
os dados necessários, todo o resto é
mantido escondido, através de
especificadores de acesso (public,
private, protected).
A utilização de encapsulamento
também favorece a reusabilidade e
manutenção do código.
Trabalho: Exemplifique o
encapsulamento recorrendo a vida
prática.
21. Herança
Através da herança uma
determinada subclasse herda
todos os atributos e métodos da
superclasse.
Permite a um analista especificar
serviços e atributos comuns uma
só vez, assim como especializar e
estender estes atributos e
serviços em casos específicos.
22. Herança
Herança é a criação de novas
classes, chamadas classes
derivadas, a partir de classes já
existentes, as classes-base.
Alguns dos benefícios da utilização
de herança é a reutilização do
código da classe base, além da
possibilidade de implementação de
classes abstractas genéricas.
23. Herança
Uma classe derivada (ou subclasse)
pode realizar todas as funções que a
classe-base (ou superclasse)
realizaria. A subclasse herda todos os
métodos públicos da superclasse,
mas não possui acesso a nenhum
método privado de sua classe-base.
Além disso, uma subclasse pode
acrescentar mais alguns métodos ou
atributos àqueles herdados da
superclasse, possuindo
características particulares em
relação à classe-base.
24. Polimorfismo
Polimorfismo é um conceito usado
em linguagens de programação OO
para denotar a característica de que a
linguagem suporta a utilização do
mesmo identificador (o mesmo nome)
para métodos de classes diferentes.
Trabalho: Dê um exemplo concreto
sobre herança.
25. Polimorfismo
Um conceito no qual um nome
(variável) pode denotar objectos
de muitas subclasses diferentes
que são relacionadas por alguma
superclasse comum, assim,
qualquer objecto denotado por
esse nome tem a capacidade de
responder a algum conjunto
comum de operações de modos
diferentes [Booch, 2000].
26. Polimorfismo
Polimorfismo caracteriza a criação de
funções com um mesmo nome, mas
códigos diferentes, facilitando a
extensão de sistemas.
Um tipo de polimorfismo é a
redefinição de métodos para uma
classe derivada. Para que isso
aconteça, o método deve possuir o
mesmo nome, tipo de retorno e
argumentos do método sobrescrito.
Trabalho: Dê um exemplo, da vida
prática, sobre Polimorfismo.
27. Bibliografia
Bennett, S. et all (2002) object-oriented
systems analysis and design using uml, U.S., Mc
Graw-Hill Education
Bezerra, E. (2003), Princípios de Análise e Projecto
de Sistemas com UML, Rio de Janeiro, Editora
Campus Ltda
Bitencourt, T. (2004) Conceitos de Programação
Orientada a Objetos, http://www.guj.com.br,
consultado em 15/02/05
Eriksson, H. e Penker, M. (2000), Business
Modeling with UML: Business Patterns at work,
Suécia, Wiley Computer Publishing
Nunes, M. e O´Neill (2001), Fundamental de UML,
Lisboa, FCA - Editora de Informática
Seixas, R. Programação Orientada a Objetos
http://w3.impa.br, consultado em 18/02/05
28. TPC
1. Usando a sua capacidade de
abstracção, monte uma hierarquia de
classes, com no mínimo 3 níveis e 6
classes. Para cada classe identifique
3 estados e três métodos;
2. Escreva a Classe Pessoa em JAVA,
com atributos nome, idade, e que
implementa os métodos: pessoa,
setNome, getNome, setIdade,
getIdade, printPessoa, printAdulto,
printNaoAdulto;
3. Crie objectos da classe Pessoa e
execute os métodos criados.