SlideShare uma empresa Scribd logo
1 de 28
Baixar para ler offline
Fundamentos Sobre
Análise Orientada a
     Objectos
       Docentes: Zeferino Saugene
                 Edgar Gemo
Conteúdo

  Análise Orientada a Objectos
  Princípios de OO
  Conceitos de OO
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
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.
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.
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
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.
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.
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.
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.
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.
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.
Sintaxe

 É conveniente que métodos
 sejam representados pelo nome
 do método seguido de abre e
 fecha parênteses.
Exemplo: inscreverEstudante()
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.
Tipos de Abstracção

Existem duas formas de abstracção:

    Abstracção de Procedimentos
    Abstracção de Dados.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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].
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.
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
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.

Mais conteúdo relacionado

Mais procurados

Java Básico :: Classe Vector
Java Básico :: Classe VectorJava Básico :: Classe Vector
Java Básico :: Classe VectorWesley R. Bezerra
 
Java - Aula 2 - Orientado a Objetos
Java - Aula 2 - Orientado a ObjetosJava - Aula 2 - Orientado a Objetos
Java - Aula 2 - Orientado a ObjetosMoises Omena
 
POO - Aula 07 - Construtores e Atributos de Classe
POO - Aula 07 - Construtores e Atributos de ClassePOO - Aula 07 - Construtores e Atributos de Classe
POO - Aula 07 - Construtores e Atributos de ClasseFelipe J. R. Vieira
 
Java básico - Módulo 08 - Introdução à programação orientada à objetos oo - c...
Java básico - Módulo 08 - Introdução à programação orientada à objetos oo - c...Java básico - Módulo 08 - Introdução à programação orientada à objetos oo - c...
Java básico - Módulo 08 - Introdução à programação orientada à objetos oo - c...Professor Samuel Ribeiro
 
Fundamentos e princípios do projeto orientado a objetos
Fundamentos e princípios do projeto orientado a objetosFundamentos e princípios do projeto orientado a objetos
Fundamentos e princípios do projeto orientado a objetosEvandro Agnes
 
Sistemas Distribuídos - Aula 04 - Revisão de Java
Sistemas Distribuídos - Aula 04 - Revisão de JavaSistemas Distribuídos - Aula 04 - Revisão de Java
Sistemas Distribuídos - Aula 04 - Revisão de JavaArthur Emanuel
 
Revisão Sobre Programação Orientada a Objetos com Java
Revisão Sobre Programação Orientada a Objetos com Java Revisão Sobre Programação Orientada a Objetos com Java
Revisão Sobre Programação Orientada a Objetos com Java Mario Jorge Pereira
 
Especialização e generalização em java
Especialização e generalização em javaEspecialização e generalização em java
Especialização e generalização em javaDiogo Winck
 
Conhecendo A Linguagem de Programação Java
Conhecendo A Linguagem de Programação JavaConhecendo A Linguagem de Programação Java
Conhecendo A Linguagem de Programação JavaMicael Coutinho
 
Java básico - Módulo 09: Introdução a programação orientada à objetos
Java básico - Módulo 09: Introdução a programação orientada à objetosJava básico - Módulo 09: Introdução a programação orientada à objetos
Java básico - Módulo 09: Introdução a programação orientada à objetosProfessor Samuel Ribeiro
 

Mais procurados (20)

Diagrama de Classe
Diagrama de ClasseDiagrama de Classe
Diagrama de Classe
 
Java 00 Poo
Java 00 PooJava 00 Poo
Java 00 Poo
 
Java Básico :: Classe Vector
Java Básico :: Classe VectorJava Básico :: Classe Vector
Java Básico :: Classe Vector
 
Python Orientação a Objeto
Python Orientação a ObjetoPython Orientação a Objeto
Python Orientação a Objeto
 
Java - Aula 2 - Orientado a Objetos
Java - Aula 2 - Orientado a ObjetosJava - Aula 2 - Orientado a Objetos
Java - Aula 2 - Orientado a Objetos
 
POO - Aula 07 - Construtores e Atributos de Classe
POO - Aula 07 - Construtores e Atributos de ClassePOO - Aula 07 - Construtores e Atributos de Classe
POO - Aula 07 - Construtores e Atributos de Classe
 
Java básico - Módulo 08 - Introdução à programação orientada à objetos oo - c...
Java básico - Módulo 08 - Introdução à programação orientada à objetos oo - c...Java básico - Módulo 08 - Introdução à programação orientada à objetos oo - c...
Java básico - Módulo 08 - Introdução à programação orientada à objetos oo - c...
 
Fundamentos e princípios do projeto orientado a objetos
Fundamentos e princípios do projeto orientado a objetosFundamentos e princípios do projeto orientado a objetos
Fundamentos e princípios do projeto orientado a objetos
 
Pro model
Pro modelPro model
Pro model
 
Java básico - Módulo 06: Array
Java básico - Módulo 06: ArrayJava básico - Módulo 06: Array
Java básico - Módulo 06: Array
 
Aula 09 - introducao oo
Aula 09 - introducao ooAula 09 - introducao oo
Aula 09 - introducao oo
 
Sistemas Distribuídos - Aula 04 - Revisão de Java
Sistemas Distribuídos - Aula 04 - Revisão de JavaSistemas Distribuídos - Aula 04 - Revisão de Java
Sistemas Distribuídos - Aula 04 - Revisão de Java
 
03 poo
03 poo03 poo
03 poo
 
Revisão Sobre Programação Orientada a Objetos com Java
Revisão Sobre Programação Orientada a Objetos com Java Revisão Sobre Programação Orientada a Objetos com Java
Revisão Sobre Programação Orientada a Objetos com Java
 
POO - 13 - Arrays em Java
POO - 13 - Arrays em JavaPOO - 13 - Arrays em Java
POO - 13 - Arrays em Java
 
Especialização e generalização em java
Especialização e generalização em javaEspecialização e generalização em java
Especialização e generalização em java
 
Conhecendo A Linguagem de Programação Java
Conhecendo A Linguagem de Programação JavaConhecendo A Linguagem de Programação Java
Conhecendo A Linguagem de Programação Java
 
Classes e Objectos JAVA
Classes e Objectos JAVAClasses e Objectos JAVA
Classes e Objectos JAVA
 
Trabalho de análise e projeto 2
Trabalho de análise e projeto 2Trabalho de análise e projeto 2
Trabalho de análise e projeto 2
 
Java básico - Módulo 09: Introdução a programação orientada à objetos
Java básico - Módulo 09: Introdução a programação orientada à objetosJava básico - Módulo 09: Introdução a programação orientada à objetos
Java básico - Módulo 09: Introdução a programação orientada à objetos
 

Destaque

El nuevo papel de los sistemas operativos
El nuevo papel de los sistemas operativosEl nuevo papel de los sistemas operativos
El nuevo papel de los sistemas operativosOmega Peripherals
 
Anomie Schalonia Smith
Anomie Schalonia SmithAnomie Schalonia Smith
Anomie Schalonia Smithcheloina
 
Instalacion de windows
Instalacion de windowsInstalacion de windows
Instalacion de windowslily.serrano
 
Развитие IT-организации - от рассвета до заката
Развитие IT-организации - от рассвета до закатаРазвитие IT-организации - от рассвета до заката
Развитие IT-организации - от рассвета до закатаSQALab
 
Session 68 goran kecklund abs
Session 68 goran kecklund absSession 68 goran kecklund abs
Session 68 goran kecklund absBjornPeters
 
某Music unなんとか
某Music unなんとか某Music unなんとか
某Music unなんとかYutaka Tsumori
 
Microsoft word-teori-asam-basa-garam
Microsoft word-teori-asam-basa-garamMicrosoft word-teori-asam-basa-garam
Microsoft word-teori-asam-basa-garamzidni9
 

Destaque (9)

El nuevo papel de los sistemas operativos
El nuevo papel de los sistemas operativosEl nuevo papel de los sistemas operativos
El nuevo papel de los sistemas operativos
 
Anomie Schalonia Smith
Anomie Schalonia SmithAnomie Schalonia Smith
Anomie Schalonia Smith
 
Instalacion de windows
Instalacion de windowsInstalacion de windows
Instalacion de windows
 
Redes sociales lucas y giordano
Redes sociales lucas y giordanoRedes sociales lucas y giordano
Redes sociales lucas y giordano
 
J530 15 workshop
J530 15 workshopJ530 15 workshop
J530 15 workshop
 
Развитие IT-организации - от рассвета до заката
Развитие IT-организации - от рассвета до закатаРазвитие IT-организации - от рассвета до заката
Развитие IT-организации - от рассвета до заката
 
Session 68 goran kecklund abs
Session 68 goran kecklund absSession 68 goran kecklund abs
Session 68 goran kecklund abs
 
某Music unなんとか
某Music unなんとか某Music unなんとか
某Music unなんとか
 
Microsoft word-teori-asam-basa-garam
Microsoft word-teori-asam-basa-garamMicrosoft word-teori-asam-basa-garam
Microsoft word-teori-asam-basa-garam
 

Semelhante a Aula 3 -_fundamentos_sobre_aoo

IES GF - Introdução a Linguagem de Programação Orientada a Objetos
IES GF - Introdução a Linguagem de Programação Orientada a ObjetosIES GF - Introdução a Linguagem de Programação Orientada a Objetos
IES GF - Introdução a Linguagem de Programação Orientada a ObjetosRamon Mayor Martins
 
Metodologia orientado a objetos
Metodologia orientado a objetosMetodologia orientado a objetos
Metodologia orientado a objetosGabriel Faustino
 
Apresentação programação orientada à objetos
Apresentação   programação orientada à objetosApresentação   programação orientada à objetos
Apresentação programação orientada à objetossoncino
 
pec-12-patterns-intro.ppt
pec-12-patterns-intro.pptpec-12-patterns-intro.ppt
pec-12-patterns-intro.pptssuser7025cf
 
Introdução à programação por objectos final
Introdução à programação por objectos finalIntrodução à programação por objectos final
Introdução à programação por objectos finalemcp11
 
Umlv4 090813182632-phpapp02
Umlv4 090813182632-phpapp02Umlv4 090813182632-phpapp02
Umlv4 090813182632-phpapp02Jhonefj
 
Introdução a programação Orientada a Objeto
Introdução a programação Orientada a ObjetoIntrodução a programação Orientada a Objeto
Introdução a programação Orientada a ObjetoMarconi Rodrigues
 
Introdução a poo
Introdução a pooIntrodução a poo
Introdução a pooSedu
 
APOO.INT- S01 Paradigma de Orientação a Objetos (2).pdf
APOO.INT- S01 Paradigma de Orientação a Objetos (2).pdfAPOO.INT- S01 Paradigma de Orientação a Objetos (2).pdf
APOO.INT- S01 Paradigma de Orientação a Objetos (2).pdfpedrina4
 
01 Orientacao A Objetos Programacao
01   Orientacao A Objetos   Programacao01   Orientacao A Objetos   Programacao
01 Orientacao A Objetos Programacaotaniamaciel
 
Aula 4 -_metodologia_e_tecnicas_de_analise_oo
Aula 4 -_metodologia_e_tecnicas_de_analise_ooAula 4 -_metodologia_e_tecnicas_de_analise_oo
Aula 4 -_metodologia_e_tecnicas_de_analise_ooPortal_do_estudante_ADS
 
Intro oca,ocp 6 & 7, oo basics
Intro   oca,ocp 6 & 7, oo basicsIntro   oca,ocp 6 & 7, oo basics
Intro oca,ocp 6 & 7, oo basicsJuarez Junior
 
design patterns - introdução
design patterns - introduçãodesign patterns - introdução
design patterns - introduçãoelliando dias
 

Semelhante a Aula 3 -_fundamentos_sobre_aoo (20)

IES GF - Introdução a Linguagem de Programação Orientada a Objetos
IES GF - Introdução a Linguagem de Programação Orientada a ObjetosIES GF - Introdução a Linguagem de Programação Orientada a Objetos
IES GF - Introdução a Linguagem de Programação Orientada a Objetos
 
Metodologia orientado a objetos
Metodologia orientado a objetosMetodologia orientado a objetos
Metodologia orientado a objetos
 
Apresentação programação orientada à objetos
Apresentação   programação orientada à objetosApresentação   programação orientada à objetos
Apresentação programação orientada à objetos
 
Sld 4
Sld 4Sld 4
Sld 4
 
Aula01-IntroducaoOO.pptx
Aula01-IntroducaoOO.pptxAula01-IntroducaoOO.pptx
Aula01-IntroducaoOO.pptx
 
pec-12-patterns-intro.ppt
pec-12-patterns-intro.pptpec-12-patterns-intro.ppt
pec-12-patterns-intro.ppt
 
Java7
Java7Java7
Java7
 
Introdução à programação por objectos final
Introdução à programação por objectos finalIntrodução à programação por objectos final
Introdução à programação por objectos final
 
Umlv4 090813182632-phpapp02
Umlv4 090813182632-phpapp02Umlv4 090813182632-phpapp02
Umlv4 090813182632-phpapp02
 
Classes e Estrutura de Dados
Classes e Estrutura de DadosClasses e Estrutura de Dados
Classes e Estrutura de Dados
 
Estrutura de dados
Estrutura de dadosEstrutura de dados
Estrutura de dados
 
Introdução a programação Orientada a Objeto
Introdução a programação Orientada a ObjetoIntrodução a programação Orientada a Objeto
Introdução a programação Orientada a Objeto
 
Introdução a poo
Introdução a pooIntrodução a poo
Introdução a poo
 
APOO.INT- S01 Paradigma de Orientação a Objetos (2).pdf
APOO.INT- S01 Paradigma de Orientação a Objetos (2).pdfAPOO.INT- S01 Paradigma de Orientação a Objetos (2).pdf
APOO.INT- S01 Paradigma de Orientação a Objetos (2).pdf
 
01 Orientacao A Objetos Programacao
01   Orientacao A Objetos   Programacao01   Orientacao A Objetos   Programacao
01 Orientacao A Objetos Programacao
 
Aula 4 -_metodologia_e_tecnicas_de_analise_oo
Aula 4 -_metodologia_e_tecnicas_de_analise_ooAula 4 -_metodologia_e_tecnicas_de_analise_oo
Aula 4 -_metodologia_e_tecnicas_de_analise_oo
 
Aula 01 introdução aoo
Aula 01   introdução aooAula 01   introdução aoo
Aula 01 introdução aoo
 
Intro oca,ocp 6 & 7, oo basics
Intro   oca,ocp 6 & 7, oo basicsIntro   oca,ocp 6 & 7, oo basics
Intro oca,ocp 6 & 7, oo basics
 
Aula orientação a objetos
Aula orientação a objetosAula orientação a objetos
Aula orientação a objetos
 
design patterns - introdução
design patterns - introduçãodesign patterns - introdução
design patterns - introdução
 

Mais de Portal_do_estudante_ADS (15)

Diagrama de classes
Diagrama de classesDiagrama de classes
Diagrama de classes
 
Diagramas de pacotes
Diagramas de pacotesDiagramas de pacotes
Diagramas de pacotes
 
Diagramas de distribuicao
Diagramas de distribuicaoDiagramas de distribuicao
Diagramas de distribuicao
 
Diagramas de componentes
Diagramas de componentesDiagramas de componentes
Diagramas de componentes
 
Aula10 diagrama colaboracao
Aula10 diagrama colaboracaoAula10 diagrama colaboracao
Aula10 diagrama colaboracao
 
Aula9 diagrama de_sequencia
Aula9 diagrama de_sequenciaAula9 diagrama de_sequencia
Aula9 diagrama de_sequencia
 
Aula8 diagrama de_objectos
Aula8 diagrama de_objectosAula8 diagrama de_objectos
Aula8 diagrama de_objectos
 
Aula2 paradigmas
Aula2 paradigmasAula2 paradigmas
Aula2 paradigmas
 
Aula1 eng software
Aula1 eng softwareAula1 eng software
Aula1 eng software
 
Aula capitulo9 diagrama_estados
Aula capitulo9 diagrama_estadosAula capitulo9 diagrama_estados
Aula capitulo9 diagrama_estados
 
Aula 7 diagramas_classes2
Aula 7 diagramas_classes2Aula 7 diagramas_classes2
Aula 7 diagramas_classes2
 
Aula 6 -_casos_de_uso
Aula 6 -_casos_de_usoAula 6 -_casos_de_uso
Aula 6 -_casos_de_uso
 
Aula 5 -_fundamentos_de_uml
Aula 5 -_fundamentos_de_umlAula 5 -_fundamentos_de_uml
Aula 5 -_fundamentos_de_uml
 
Aula -diagrama_de_actividade
Aula  -diagrama_de_actividadeAula  -diagrama_de_actividade
Aula -diagrama_de_actividade
 
Rup vs. xp
Rup vs. xpRup vs. xp
Rup vs. xp
 

Aula 3 -_fundamentos_sobre_aoo

  • 1. Fundamentos Sobre Análise Orientada a Objectos Docentes: Zeferino Saugene Edgar Gemo
  • 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.
  • 15. Tipos de Abstracção Existem duas formas de abstracção: Abstracção de Procedimentos Abstracção de Dados.
  • 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.