SlideShare uma empresa Scribd logo
Aula 1
Introdução à Orientação a
Objetos (OO) e UML
Departamento de Sistemas de Computação
Universidade de São Paulo
Análise e Projeto Orientados a Objetos
Responsável
Prof. Seiji Isotani (sisotani@icmc.usp.br)
Introdução
⚫Necessidade de abordagens para desenvolver
software de maneira organizada e estruturada
◦ Análise Estruturada
◦ Análise Essencial
◦ Análise OO
◦ ...
Entendimento
Modificação
Revalidação
Projeto
Codificação
Teste
Análise de Sistema
Planejamento
Análise de
Requisitos
Fases dos Modelos de
Processo de Software
DEFINIÇÃO
MANUTENÇÃO
Análise OO
ATIVIDADES DE
APOIO
• Controle e
Acompanhamento do
Projeto de Software
• Revisões Técnicas
Formais
• Garantia de
Qualidade de
Software
• Gerenciamento de
Configuração de
Software
• Preparação e
Produção de
Documentos
• Gerenciamento de
Reusabilidade
• Medidas
• Gerenciamento de
Riscos
CONSTRUÇÃO
Projeto OO
Conceitos Básicos
⚫ Orientação a Objetos (OO) é uma abordagem de
programação que procura explorar nosso lado intuitivo. Os
objetos da computação são análogos aos objetos existentes
no mundo real.
⚫ No enfoque de OO, os átomos do processo de computação
são os objetos que trocam mensagens entre si.
⚫ Essas mensagens resultam na ativação de métodos, os quais
realizam as ações necessárias.
Conceitos Básicos
⚫ Os objetos que compartilham uma mesma interface, ou
seja, respondem as mesmas mensagens, são agrupados
em classes.
⚫ Objeto é algo DINÂMICO: é criado por alguém, tem uma
vida, e morre ou é morto por alguém. Assim, durante a
execução do sistema, os objetos podem:
◦ ser construídos
◦ executar ações
◦ ser destruídos
◦ tornar-se inacessíveis
Histórico de Orientação a Objetos (OO)
⚫A OO surgiu no final da década de 60, quando dois
cientistas dinamarqueses criaram a linguagem
Simula (Simulation Language)
⚫1967 - Linguagem de Programação Simula-67-
conceitos de classe e herança
⚫O termo Programação Orientada a Objeto (POO) é
introduzido com a linguagem Smalltalk (1983)
Histórico de Orientação a Objetos (OO)
⚫ FINS DOS ANOS 80  Paradigma de Orientação a Objetos
◦ abordagem poderosa e prática para o desenvolvimento
de software
⚫ Linguagens orientadas a objetos
◦ Smalltalk (1972), Ada (1983), Eiffel (~1985)
◦ Object Pascal (1986), Common Lisp (1986), C++ (1986)
◦ Java (~1990), Phyton (~1990), Perl 5 (2005)
Linguagens orientadas a objetos
⚫"puras“ – tudo nelas é tratado consistentemente
como um objeto, desde as primitivas até
caracteres e pontuação. Exemplos: Smalltalk,
Eiffel, Ruby.
⚫Projetadas para OO, mas com alguns
elementos procedimentais. Exemplos: Java,
Python.
⚫Linguagens historicamente procedimentais, mas
que foram estendidas com características OO.
Exemplos: C++, Fortran 2003, Perl 5.
Fonte: Wikipedia
Vantagens de OO
⚫ abstração de dados: os detalhes referentes às
representações das classes serão visíveis apenas a seus
atributos;
⚫ compatibilidade: as heurísticas para a construção das classes
e suas interfaces levam a componentes de software que são
fáceis de combinar;
⚫ diminuição da complexidade: as classes delimitam-se em
unidades naturais para a alocação de tarefas de
desenvolvimento de software;
Vantagens de OO
⚫ reutilização: o encapsulamento dos métodos e
representação dos dados para a construção de classes
facilitam o desenvolvimento de software reutilizável,
auxiliando na produtividade de sistemas;
⚫ extensibilidade: facilidade de estender o software devido a
duas razões:
◦ herança: novas classes são construídas a partir das que já existem;
◦ as classes formam uma estrutura fracamente acoplada, o que facilita
alterações;
⚫ manutenibilidade: a modularização natural em classes
facilita a realização de alterações no software.
Vantagens de OO
⚫maior dedicação à fase de análise, preocupando-se
com a essência do sistema;
⚫mesma notação é utilizada desde a fase de análise
até a implementação.
Frente a essas vantagens, a abordagem OO tem
provado ser “popular” e eficaz.
Objetos
⚫ Tudo em OO é OBJETO
◦ Objeto, no mundo físico, é tipicamente um produtor e consumidor de
itens de informação
⚫ Definição (mundo do software)
◦ “Qualquer coisa, real ou abstrata, a respeito da qual
armazenamos dados e métodos que os manipulam”
Martin, Odell (1995)
◦ Abstração de uma entidade do mundo real de modo que
essa entidade possui várias características
Objetos e Classes
Leitor
nome
numeroUSP
dataNascimento
le2: Leitor
nome = Joao da Silva
numeroUSP = 323232
dataNascimento = 02/23/1978
le1: Leitor
nome = Maria dos Santos
numeroUsp = 342343
dataNascimento = 04/25/1973
objetos
classes
FornoDeMicroondas
capacidade
potência
status
horário
forno1: FornoDeMicroondas
capacidade = 40
potencia = 600
status = desligado
hora = 09:35
Classes
⚫ Agrupamento de objetos similares.
⚫ Todo objeto é uma instância de uma Classe.
⚫ Os objetos representados por determinada classe
diferenciam-se entre si pelos valores de seus atributos.
⚫ Conjunto de objetos que possuem propriedades
semelhantes (ATRIBUTOS), o mesmo comportamento
(MÉTODOS), os mesmos relacionamentos com outros
objetos e a mesma semântica.
Atributos
◦ Representam um conjunto de informações, ou seja,
elementos de dados que caracterizam um objeto
◦ Descrevem as informações que ficam escondidas em um
objeto para serem exclusivamente manipuladas pelas
operações daquele objeto
◦ São variáveis que definem o estado de um objeto, ou seja,
são entidades que caracterizam os objetos
◦ Cada objeto possui seu próprio conjunto de atributos
Métodos
◦ São procedimentos definidos e declarados que atuam
sobre um objeto ou sobre uma classe de objetos
◦ Métodos são invocados por Mensagens
◦ Cada objeto possui seu próprio conjunto de métodos
Métodos X Mensagem
le1: Leitor
nome = Maria dos Santos
numeroUsp = 342343
dataNascimento = 04/25/1973
le1.alterarNome(‘Rosa Olivera’)
mensagem
método alterarNome(Char[30] novoNome)
Inicio
nome := novoNome;
Fim
método
Atributos e Métodos
Atributos
Métodos
Automóvel
proprietário
marca
placa
ano
registrar
transferir_Proprietário
mudar_Placa
Abstração
⚫Processo pelo qual conceitos gerais são formulados a
partir de conceitos específicos.
⚫Detalhes são ignorados, para nos concentrarmos nas
características essenciais dos objetos de uma coleção
Abstração
Encapsulamento
⚫permite que certas características ou propriedades
dos objetos de uma classe não possam ser vistas ou
modificadas externamente, ou seja, ocultam-se as
características internas do objeto
◦ outras classes só podem acessar os atributos de uma
classe invocando os métodos públicos;
◦ restringe a visibilidade do objeto, mas facilita o reuso
Conceitos Básicos
⚫Associações entre Classes
Proprietário
nome
endereço
telefone
consultar
incluir
Automóvel
proprietário
marca
placa
ano
registrar
transferir_Proprietário
mudar_Placa
possui
Herança
◦ mecanismo que permite que características comuns a diversas
classes sejam colocadas em uma classe base, ou superclasse.
◦ As propriedades da superclasse não precisam ser repetidas em
cada subclasse.
◦ Por exemplo, JanelaRolante e JanelaFixa são subclasses de Janela.
Elas herdam as propriedades de Janela, como uma região visível na
tela. JanelaRolante acrescenta uma barra de paginação e um
afastamento.
Estudante
GENERALIZAÇÃO
ESPECIALIZAÇÃO
(herança)
Superclasse
Estudante
de Pós-
Graduação
Estudante
de
Graduação
Subclasse
Herança: Generalização/Especialização
Herança
A Gas
temperatura
Forno
capacidade
Microondas
horario
potencia
Elétrico
voltagem
A Lenha
quantMaxLenha
Analógico Digital
Camping
Acendimento com Fósforo
Acendimento Elétrico
Herança Múltipla
Existe mais de uma superclasse, ou seja, uma classe é
declarada como uma subclasse de uma ou mais
superclasses.
Estudante
data_ingresso
Funcionário
data_admissão
salario
Leitor da Biblioteca
num_cadastro
Polimorfismo
⚫ O Polimorfismo geralmente representa a qualidade ou
estado de um objeto ser capaz de assumir diferentes
formas.
⚫ Mais especificamente, propriedade segundo o qual vários
métodos podem existir com o mesmo nome.
◦ Ao receber uma mensagem para efetuar uma Operação, é o objeto
quem determina como a operação deve ser efetuada;
◦ Permite a criação de várias classes com interfaces idênticas, porém
objetos e implementações diferentes.
Polimorfismo
⚫Exemplos:
◦ O operador “+” pode ser usado com inteiros, pontos-
flutuantes ou strings.
◦ A operação mover pode atuar diferentemente nas classes
Janela e PeçadeXadrez.
29
Introdução à UML
⚫UML (Unified Modelling Language)
⚫É uma linguagem para especificação, construção,
visualização e documentação de sistemas.
⚫É uma evolução das linguagens para especificação de
conceitos de Booch, OMT e OOSE e também de
outros métodos de especificação de requisitos de
software orientados a objetos ou não.
30
Histórico da UML
⚫ Início em Outubro de 1994: Booch e Jim Rumbaugh começaram um esforço
para unificar o método de Booch e OMT (Object Modeling Language).
⚫ Uma primeira versão, chamada Unified Method, foi divulgada em outubro de
1995.
⚫ Jacobson juntou-se ao grupo, agregando o método OOSE (Object-Oriented
Software Engineering) .
⚫ O esforço dos três resultou na liberação da UML versão 0.9 e 0.91 em junho e
outubro de 1996. Em janeiro de 1997, foi liberada a versão 1.0 da UML.
⚫ Adotada como padrão segundo a OMG (Object Management Group,
http://www.omg.org/) em Novembro de 1997
⚫ UML 2.0 em 2004
Introdução: UML
FUSION
(Coleman et al)
STATECHARTS
(Harel)
OMT
(Rumbaugh et al)
BOOCH
(Booch)
OOSE/Objectory
(Jacobson)
 Grafo de Interação de Objetos
(diagrama de colaboração)
 Diagrama de Casos de Uso
 Subsistemas (pacotes)
 Diagrama de Estados
 Diagrama de Classes
 Diagrama de Objetos (diagrama de
colaboração)
 Diagrama de Processos (diagrama de
implantação)
 Diagrama de Módulos (diagrama de
componentes)
(Rumbaugh, Booch e Jacobson)
UML
32
Ferramentas de Apoio
◦ Diversas empresas lançaram ferramentas para auxiliar a
modelagem e projeto de sistemas utilizando UML, gerar
código a partir da modelagem e projeto e realizar
engenharia reversa, ou seja, obter o modelo em UML a
partir do código.
33
Ferramentas de Apoio
⚫ Exemplos:
◦ A família Rational Rose Enterprise (da Rational Software Corporation
www.rational.com) que gera código em Smalltalk, PowerBuilder, C++,
J++ e VB.
◦ ArgoUML- free http://argouml.tigris.org/
◦ www.objectsbydesign.com/tools/umltools_byCompany.html (lista de
ferramentas que envolvem a UML), entre elas Jude (agora Astah) e
Visual Paradigm
◦ StarUML: Livre
🞄http://staruml.sourceforge.net
34
Diagramas da UML
⚫ Diagramas de Casos de Uso
⚫ Diagramas de Classe
⚫ Diagramas de Comportamento
◦ Diagrama de Estado
◦ Diagrama de Atividade
◦ Diagrama de Seqüência
◦ Diagrama de Colaboração
⚫ Diagramas de Implementação
◦ Diagrama de Componente
◦ Diagrama de Implantação (Deployment)
35
Material sobre UML
⚫ http://www.rational.com (Rational)
⚫ http://www.omg.org (Object Management Group)
⚫ Page-Jones, M.; Fundamentos do desenho orientado a objeto com UML,
Makron Books, 2001.
⚫ Furlan, J. D.; Modelagem de Objetos Através da UML, Makron Books,
1998.
⚫ Rumbaugh, J., Jacobson, I., Booch, G.; The Unified Modeling Language
Reference Manual, Addison-Wesley, c1999.
⚫ Conallen, J.; Building Web Applications with UML, Addison-Wesley,
1999.
⚫ Fowler, M.; Scott, K.; UML Essencial, Bookman, 2000.

Mais conteúdo relacionado

Semelhante a Aula01-IntroducaoOO.pptx

Aula 1 - Linguagem III
Aula 1 - Linguagem IIIAula 1 - Linguagem III
Aula 1 - Linguagem III
Juliano Weber
 
UML
UMLUML
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
Juarez Junior
 
Java7
Java7Java7
Analise e projetos orientados a objetos
Analise e projetos orientados a objetosAnalise e projetos orientados a objetos
Analise e projetos orientados a objetos
Sliedesharessbarbosa
 
Estrutura de dados
Estrutura de dadosEstrutura de dados
Estrutura de dados
JoseHenrique Joanoni
 
Apresentação Banco de Dados - Caché
Apresentação Banco de Dados - CachéApresentação Banco de Dados - Caché
Apresentação Banco de Dados - Caché
Renzo Petri
 
Linguagem de programação introdução v1
Linguagem de programação   introdução v1Linguagem de programação   introdução v1
Linguagem de programação introdução v1
Carlos Melo
 
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
emcp11
 
Análise de sistemas oo 1
Análise de sistemas oo   1Análise de sistemas oo   1
Análise de sistemas oo 1
Maurício Linhares
 
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
Ramon Mayor Martins
 
Aula 5 -_fundamentos_de_uml
Aula 5 -_fundamentos_de_umlAula 5 -_fundamentos_de_uml
Aula 5 -_fundamentos_de_uml
Portal_do_estudante_ADS
 
01 Orientacao A Objetos Programacao
01   Orientacao A Objetos   Programacao01   Orientacao A Objetos   Programacao
01 Orientacao A Objetos Programacao
taniamaciel
 
Programação orientada a objetos
Programação orientada a objetosProgramação orientada a objetos
Programação orientada a objetos
Cleyton Ferrari
 
Java 00 Poo
Java 00 PooJava 00 Poo
Java 00 Poo
Regis Magalhães
 
Introdução à linguagem UML
Introdução à linguagem UMLIntrodução à linguagem UML
Introdução à linguagem UML
Nécio de Lima Veras
 
Aula 09 - introducao oo
Aula 09 - introducao ooAula 09 - introducao oo
Aula 09 - introducao oo
Moacir Jóse Ferreira Junior Ferreira
 
Análise e Modelagem com UML
Análise e Modelagem com UMLAnálise e Modelagem com UML
Análise e Modelagem com UML
Álvaro Farias Pinheiro
 
Banco de Dados Orientado a Objeto
Banco de Dados Orientado a ObjetoBanco de Dados Orientado a Objeto
Banco de Dados Orientado a Objeto
elliando dias
 
Programação Oritentada a Aspecto
Programação Oritentada a AspectoProgramação Oritentada a Aspecto
Programação Oritentada a Aspecto
Benicio Ávila
 

Semelhante a Aula01-IntroducaoOO.pptx (20)

Aula 1 - Linguagem III
Aula 1 - Linguagem IIIAula 1 - Linguagem III
Aula 1 - Linguagem III
 
UML
UMLUML
UML
 
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
 
Java7
Java7Java7
Java7
 
Analise e projetos orientados a objetos
Analise e projetos orientados a objetosAnalise e projetos orientados a objetos
Analise e projetos orientados a objetos
 
Estrutura de dados
Estrutura de dadosEstrutura de dados
Estrutura de dados
 
Apresentação Banco de Dados - Caché
Apresentação Banco de Dados - CachéApresentação Banco de Dados - Caché
Apresentação Banco de Dados - Caché
 
Linguagem de programação introdução v1
Linguagem de programação   introdução v1Linguagem de programação   introdução v1
Linguagem de programação introdução v1
 
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
 
Análise de sistemas oo 1
Análise de sistemas oo   1Análise de sistemas oo   1
Análise de sistemas oo 1
 
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
 
Aula 5 -_fundamentos_de_uml
Aula 5 -_fundamentos_de_umlAula 5 -_fundamentos_de_uml
Aula 5 -_fundamentos_de_uml
 
01 Orientacao A Objetos Programacao
01   Orientacao A Objetos   Programacao01   Orientacao A Objetos   Programacao
01 Orientacao A Objetos Programacao
 
Programação orientada a objetos
Programação orientada a objetosProgramação orientada a objetos
Programação orientada a objetos
 
Java 00 Poo
Java 00 PooJava 00 Poo
Java 00 Poo
 
Introdução à linguagem UML
Introdução à linguagem UMLIntrodução à linguagem UML
Introdução à linguagem UML
 
Aula 09 - introducao oo
Aula 09 - introducao ooAula 09 - introducao oo
Aula 09 - introducao oo
 
Análise e Modelagem com UML
Análise e Modelagem com UMLAnálise e Modelagem com UML
Análise e Modelagem com UML
 
Banco de Dados Orientado a Objeto
Banco de Dados Orientado a ObjetoBanco de Dados Orientado a Objeto
Banco de Dados Orientado a Objeto
 
Programação Oritentada a Aspecto
Programação Oritentada a AspectoProgramação Oritentada a Aspecto
Programação Oritentada a Aspecto
 

Último

EVOLUÇÃO-EVOLUÇÃO- A evolução pode ser definida como a mudança na forma e no ...
EVOLUÇÃO-EVOLUÇÃO- A evolução pode ser definida como a mudança na forma e no ...EVOLUÇÃO-EVOLUÇÃO- A evolução pode ser definida como a mudança na forma e no ...
EVOLUÇÃO-EVOLUÇÃO- A evolução pode ser definida como a mudança na forma e no ...
jenneferbarbosa21
 
anatomia e fisiologia de peixes CRMVCP.
anatomia e fisiologia de peixes  CRMVCP.anatomia e fisiologia de peixes  CRMVCP.
anatomia e fisiologia de peixes CRMVCP.
FERNANDACAROLINEPONT
 
Cards das Espécies da Coleção-Carpoteca Temática Itinerante sediada no Labora...
Cards das Espécies da Coleção-Carpoteca Temática Itinerante sediada no Labora...Cards das Espécies da Coleção-Carpoteca Temática Itinerante sediada no Labora...
Cards das Espécies da Coleção-Carpoteca Temática Itinerante sediada no Labora...
jenneferbarbosa21
 
MÁQUINAS SIMPLES-ALAVANCAS-POLIAS-ENGRENAGENS.pptx
MÁQUINAS SIMPLES-ALAVANCAS-POLIAS-ENGRENAGENS.pptxMÁQUINAS SIMPLES-ALAVANCAS-POLIAS-ENGRENAGENS.pptx
MÁQUINAS SIMPLES-ALAVANCAS-POLIAS-ENGRENAGENS.pptx
MnicaPereira739219
 
2-10-EF - 9º ANO - CIÊNCIAS - LUZ E CORES.pdf
2-10-EF - 9º ANO - CIÊNCIAS - LUZ E CORES.pdf2-10-EF - 9º ANO - CIÊNCIAS - LUZ E CORES.pdf
2-10-EF - 9º ANO - CIÊNCIAS - LUZ E CORES.pdf
FlorAzaleia1
 
Taxonomia: é a ciência que classifica os seres vivos, estabelecendo critérios...
Taxonomia: é a ciência que classifica os seres vivos, estabelecendo critérios...Taxonomia: é a ciência que classifica os seres vivos, estabelecendo critérios...
Taxonomia: é a ciência que classifica os seres vivos, estabelecendo critérios...
jenneferbarbosa21
 
Grupo_3-Como_o_conhecimento_cientifico_e_construido_e_divulgado.pptx ________...
Grupo_3-Como_o_conhecimento_cientifico_e_construido_e_divulgado.pptx ________...Grupo_3-Como_o_conhecimento_cientifico_e_construido_e_divulgado.pptx ________...
Grupo_3-Como_o_conhecimento_cientifico_e_construido_e_divulgado.pptx ________...
MelissaSouza39
 
Aula 1. Introdução ao estudo da célula.ppt
Aula 1. Introdução ao estudo da célula.pptAula 1. Introdução ao estudo da célula.ppt
Aula 1. Introdução ao estudo da célula.ppt
cleidianevieira7
 

Último (8)

EVOLUÇÃO-EVOLUÇÃO- A evolução pode ser definida como a mudança na forma e no ...
EVOLUÇÃO-EVOLUÇÃO- A evolução pode ser definida como a mudança na forma e no ...EVOLUÇÃO-EVOLUÇÃO- A evolução pode ser definida como a mudança na forma e no ...
EVOLUÇÃO-EVOLUÇÃO- A evolução pode ser definida como a mudança na forma e no ...
 
anatomia e fisiologia de peixes CRMVCP.
anatomia e fisiologia de peixes  CRMVCP.anatomia e fisiologia de peixes  CRMVCP.
anatomia e fisiologia de peixes CRMVCP.
 
Cards das Espécies da Coleção-Carpoteca Temática Itinerante sediada no Labora...
Cards das Espécies da Coleção-Carpoteca Temática Itinerante sediada no Labora...Cards das Espécies da Coleção-Carpoteca Temática Itinerante sediada no Labora...
Cards das Espécies da Coleção-Carpoteca Temática Itinerante sediada no Labora...
 
MÁQUINAS SIMPLES-ALAVANCAS-POLIAS-ENGRENAGENS.pptx
MÁQUINAS SIMPLES-ALAVANCAS-POLIAS-ENGRENAGENS.pptxMÁQUINAS SIMPLES-ALAVANCAS-POLIAS-ENGRENAGENS.pptx
MÁQUINAS SIMPLES-ALAVANCAS-POLIAS-ENGRENAGENS.pptx
 
2-10-EF - 9º ANO - CIÊNCIAS - LUZ E CORES.pdf
2-10-EF - 9º ANO - CIÊNCIAS - LUZ E CORES.pdf2-10-EF - 9º ANO - CIÊNCIAS - LUZ E CORES.pdf
2-10-EF - 9º ANO - CIÊNCIAS - LUZ E CORES.pdf
 
Taxonomia: é a ciência que classifica os seres vivos, estabelecendo critérios...
Taxonomia: é a ciência que classifica os seres vivos, estabelecendo critérios...Taxonomia: é a ciência que classifica os seres vivos, estabelecendo critérios...
Taxonomia: é a ciência que classifica os seres vivos, estabelecendo critérios...
 
Grupo_3-Como_o_conhecimento_cientifico_e_construido_e_divulgado.pptx ________...
Grupo_3-Como_o_conhecimento_cientifico_e_construido_e_divulgado.pptx ________...Grupo_3-Como_o_conhecimento_cientifico_e_construido_e_divulgado.pptx ________...
Grupo_3-Como_o_conhecimento_cientifico_e_construido_e_divulgado.pptx ________...
 
Aula 1. Introdução ao estudo da célula.ppt
Aula 1. Introdução ao estudo da célula.pptAula 1. Introdução ao estudo da célula.ppt
Aula 1. Introdução ao estudo da célula.ppt
 

Aula01-IntroducaoOO.pptx

  • 1. Aula 1 Introdução à Orientação a Objetos (OO) e UML Departamento de Sistemas de Computação Universidade de São Paulo Análise e Projeto Orientados a Objetos Responsável Prof. Seiji Isotani (sisotani@icmc.usp.br)
  • 2. Introdução ⚫Necessidade de abordagens para desenvolver software de maneira organizada e estruturada ◦ Análise Estruturada ◦ Análise Essencial ◦ Análise OO ◦ ...
  • 3. Entendimento Modificação Revalidação Projeto Codificação Teste Análise de Sistema Planejamento Análise de Requisitos Fases dos Modelos de Processo de Software DEFINIÇÃO MANUTENÇÃO Análise OO ATIVIDADES DE APOIO • Controle e Acompanhamento do Projeto de Software • Revisões Técnicas Formais • Garantia de Qualidade de Software • Gerenciamento de Configuração de Software • Preparação e Produção de Documentos • Gerenciamento de Reusabilidade • Medidas • Gerenciamento de Riscos CONSTRUÇÃO Projeto OO
  • 4. Conceitos Básicos ⚫ Orientação a Objetos (OO) é uma abordagem de programação que procura explorar nosso lado intuitivo. Os objetos da computação são análogos aos objetos existentes no mundo real. ⚫ No enfoque de OO, os átomos do processo de computação são os objetos que trocam mensagens entre si. ⚫ Essas mensagens resultam na ativação de métodos, os quais realizam as ações necessárias.
  • 5. Conceitos Básicos ⚫ Os objetos que compartilham uma mesma interface, ou seja, respondem as mesmas mensagens, são agrupados em classes. ⚫ Objeto é algo DINÂMICO: é criado por alguém, tem uma vida, e morre ou é morto por alguém. Assim, durante a execução do sistema, os objetos podem: ◦ ser construídos ◦ executar ações ◦ ser destruídos ◦ tornar-se inacessíveis
  • 6. Histórico de Orientação a Objetos (OO) ⚫A OO surgiu no final da década de 60, quando dois cientistas dinamarqueses criaram a linguagem Simula (Simulation Language) ⚫1967 - Linguagem de Programação Simula-67- conceitos de classe e herança ⚫O termo Programação Orientada a Objeto (POO) é introduzido com a linguagem Smalltalk (1983)
  • 7. Histórico de Orientação a Objetos (OO) ⚫ FINS DOS ANOS 80  Paradigma de Orientação a Objetos ◦ abordagem poderosa e prática para o desenvolvimento de software ⚫ Linguagens orientadas a objetos ◦ Smalltalk (1972), Ada (1983), Eiffel (~1985) ◦ Object Pascal (1986), Common Lisp (1986), C++ (1986) ◦ Java (~1990), Phyton (~1990), Perl 5 (2005)
  • 8. Linguagens orientadas a objetos ⚫"puras“ – tudo nelas é tratado consistentemente como um objeto, desde as primitivas até caracteres e pontuação. Exemplos: Smalltalk, Eiffel, Ruby. ⚫Projetadas para OO, mas com alguns elementos procedimentais. Exemplos: Java, Python. ⚫Linguagens historicamente procedimentais, mas que foram estendidas com características OO. Exemplos: C++, Fortran 2003, Perl 5. Fonte: Wikipedia
  • 9. Vantagens de OO ⚫ abstração de dados: os detalhes referentes às representações das classes serão visíveis apenas a seus atributos; ⚫ compatibilidade: as heurísticas para a construção das classes e suas interfaces levam a componentes de software que são fáceis de combinar; ⚫ diminuição da complexidade: as classes delimitam-se em unidades naturais para a alocação de tarefas de desenvolvimento de software;
  • 10. Vantagens de OO ⚫ reutilização: o encapsulamento dos métodos e representação dos dados para a construção de classes facilitam o desenvolvimento de software reutilizável, auxiliando na produtividade de sistemas; ⚫ extensibilidade: facilidade de estender o software devido a duas razões: ◦ herança: novas classes são construídas a partir das que já existem; ◦ as classes formam uma estrutura fracamente acoplada, o que facilita alterações; ⚫ manutenibilidade: a modularização natural em classes facilita a realização de alterações no software.
  • 11. Vantagens de OO ⚫maior dedicação à fase de análise, preocupando-se com a essência do sistema; ⚫mesma notação é utilizada desde a fase de análise até a implementação. Frente a essas vantagens, a abordagem OO tem provado ser “popular” e eficaz.
  • 12. Objetos ⚫ Tudo em OO é OBJETO ◦ Objeto, no mundo físico, é tipicamente um produtor e consumidor de itens de informação ⚫ Definição (mundo do software) ◦ “Qualquer coisa, real ou abstrata, a respeito da qual armazenamos dados e métodos que os manipulam” Martin, Odell (1995) ◦ Abstração de uma entidade do mundo real de modo que essa entidade possui várias características
  • 13. Objetos e Classes Leitor nome numeroUSP dataNascimento le2: Leitor nome = Joao da Silva numeroUSP = 323232 dataNascimento = 02/23/1978 le1: Leitor nome = Maria dos Santos numeroUsp = 342343 dataNascimento = 04/25/1973 objetos classes FornoDeMicroondas capacidade potência status horário forno1: FornoDeMicroondas capacidade = 40 potencia = 600 status = desligado hora = 09:35
  • 14. Classes ⚫ Agrupamento de objetos similares. ⚫ Todo objeto é uma instância de uma Classe. ⚫ Os objetos representados por determinada classe diferenciam-se entre si pelos valores de seus atributos. ⚫ Conjunto de objetos que possuem propriedades semelhantes (ATRIBUTOS), o mesmo comportamento (MÉTODOS), os mesmos relacionamentos com outros objetos e a mesma semântica.
  • 15. Atributos ◦ Representam um conjunto de informações, ou seja, elementos de dados que caracterizam um objeto ◦ Descrevem as informações que ficam escondidas em um objeto para serem exclusivamente manipuladas pelas operações daquele objeto ◦ São variáveis que definem o estado de um objeto, ou seja, são entidades que caracterizam os objetos ◦ Cada objeto possui seu próprio conjunto de atributos
  • 16. Métodos ◦ São procedimentos definidos e declarados que atuam sobre um objeto ou sobre uma classe de objetos ◦ Métodos são invocados por Mensagens ◦ Cada objeto possui seu próprio conjunto de métodos
  • 17. Métodos X Mensagem le1: Leitor nome = Maria dos Santos numeroUsp = 342343 dataNascimento = 04/25/1973 le1.alterarNome(‘Rosa Olivera’) mensagem método alterarNome(Char[30] novoNome) Inicio nome := novoNome; Fim método
  • 19. Abstração ⚫Processo pelo qual conceitos gerais são formulados a partir de conceitos específicos. ⚫Detalhes são ignorados, para nos concentrarmos nas características essenciais dos objetos de uma coleção
  • 21. Encapsulamento ⚫permite que certas características ou propriedades dos objetos de uma classe não possam ser vistas ou modificadas externamente, ou seja, ocultam-se as características internas do objeto ◦ outras classes só podem acessar os atributos de uma classe invocando os métodos públicos; ◦ restringe a visibilidade do objeto, mas facilita o reuso
  • 22. Conceitos Básicos ⚫Associações entre Classes Proprietário nome endereço telefone consultar incluir Automóvel proprietário marca placa ano registrar transferir_Proprietário mudar_Placa possui
  • 23. Herança ◦ mecanismo que permite que características comuns a diversas classes sejam colocadas em uma classe base, ou superclasse. ◦ As propriedades da superclasse não precisam ser repetidas em cada subclasse. ◦ Por exemplo, JanelaRolante e JanelaFixa são subclasses de Janela. Elas herdam as propriedades de Janela, como uma região visível na tela. JanelaRolante acrescenta uma barra de paginação e um afastamento.
  • 26. Herança Múltipla Existe mais de uma superclasse, ou seja, uma classe é declarada como uma subclasse de uma ou mais superclasses. Estudante data_ingresso Funcionário data_admissão salario Leitor da Biblioteca num_cadastro
  • 27. Polimorfismo ⚫ O Polimorfismo geralmente representa a qualidade ou estado de um objeto ser capaz de assumir diferentes formas. ⚫ Mais especificamente, propriedade segundo o qual vários métodos podem existir com o mesmo nome. ◦ Ao receber uma mensagem para efetuar uma Operação, é o objeto quem determina como a operação deve ser efetuada; ◦ Permite a criação de várias classes com interfaces idênticas, porém objetos e implementações diferentes.
  • 28. Polimorfismo ⚫Exemplos: ◦ O operador “+” pode ser usado com inteiros, pontos- flutuantes ou strings. ◦ A operação mover pode atuar diferentemente nas classes Janela e PeçadeXadrez.
  • 29. 29 Introdução à UML ⚫UML (Unified Modelling Language) ⚫É uma linguagem para especificação, construção, visualização e documentação de sistemas. ⚫É uma evolução das linguagens para especificação de conceitos de Booch, OMT e OOSE e também de outros métodos de especificação de requisitos de software orientados a objetos ou não.
  • 30. 30 Histórico da UML ⚫ Início em Outubro de 1994: Booch e Jim Rumbaugh começaram um esforço para unificar o método de Booch e OMT (Object Modeling Language). ⚫ Uma primeira versão, chamada Unified Method, foi divulgada em outubro de 1995. ⚫ Jacobson juntou-se ao grupo, agregando o método OOSE (Object-Oriented Software Engineering) . ⚫ O esforço dos três resultou na liberação da UML versão 0.9 e 0.91 em junho e outubro de 1996. Em janeiro de 1997, foi liberada a versão 1.0 da UML. ⚫ Adotada como padrão segundo a OMG (Object Management Group, http://www.omg.org/) em Novembro de 1997 ⚫ UML 2.0 em 2004
  • 31. Introdução: UML FUSION (Coleman et al) STATECHARTS (Harel) OMT (Rumbaugh et al) BOOCH (Booch) OOSE/Objectory (Jacobson)  Grafo de Interação de Objetos (diagrama de colaboração)  Diagrama de Casos de Uso  Subsistemas (pacotes)  Diagrama de Estados  Diagrama de Classes  Diagrama de Objetos (diagrama de colaboração)  Diagrama de Processos (diagrama de implantação)  Diagrama de Módulos (diagrama de componentes) (Rumbaugh, Booch e Jacobson) UML
  • 32. 32 Ferramentas de Apoio ◦ Diversas empresas lançaram ferramentas para auxiliar a modelagem e projeto de sistemas utilizando UML, gerar código a partir da modelagem e projeto e realizar engenharia reversa, ou seja, obter o modelo em UML a partir do código.
  • 33. 33 Ferramentas de Apoio ⚫ Exemplos: ◦ A família Rational Rose Enterprise (da Rational Software Corporation www.rational.com) que gera código em Smalltalk, PowerBuilder, C++, J++ e VB. ◦ ArgoUML- free http://argouml.tigris.org/ ◦ www.objectsbydesign.com/tools/umltools_byCompany.html (lista de ferramentas que envolvem a UML), entre elas Jude (agora Astah) e Visual Paradigm ◦ StarUML: Livre 🞄http://staruml.sourceforge.net
  • 34. 34 Diagramas da UML ⚫ Diagramas de Casos de Uso ⚫ Diagramas de Classe ⚫ Diagramas de Comportamento ◦ Diagrama de Estado ◦ Diagrama de Atividade ◦ Diagrama de Seqüência ◦ Diagrama de Colaboração ⚫ Diagramas de Implementação ◦ Diagrama de Componente ◦ Diagrama de Implantação (Deployment)
  • 35. 35 Material sobre UML ⚫ http://www.rational.com (Rational) ⚫ http://www.omg.org (Object Management Group) ⚫ Page-Jones, M.; Fundamentos do desenho orientado a objeto com UML, Makron Books, 2001. ⚫ Furlan, J. D.; Modelagem de Objetos Através da UML, Makron Books, 1998. ⚫ Rumbaugh, J., Jacobson, I., Booch, G.; The Unified Modeling Language Reference Manual, Addison-Wesley, c1999. ⚫ Conallen, J.; Building Web Applications with UML, Addison-Wesley, 1999. ⚫ Fowler, M.; Scott, K.; UML Essencial, Bookman, 2000.