Introdução à Linguagem de Programação JAVA

Propaganda
Introdução à Linguagem de
Programação
JAVA
Aula 01
Introdução ao Paradigma de
Orientação a Objetos
Tópicos da Aula
• Paradigma Orientado a Objetos
– OOA
– OOD
– OOP
• Componentes
• Propriedades
– OOPL
Paradigma de Orientação a
Objetos
• OOA (Object Oriented Analysis)
• OOD (Object Oriented Design)
• OOP (Object Oriented Programming)
– OOPL (Objetc Oriented Programming
Language)
Análise Orientada a Objetos
(OOA)
• Visualização do mundo através de
objetos com estruturas de dados,
comportamentos e eventos que
disparem operações, ou mudanças no
comportamento e estado dos objetos.
– Especificações e Requisitos
Benefícios da OOA
• Mapeamento simplificado do mundo
real
• Menor esforço de análise
• Facilidade de verificação pelo usuário
• Baixa complexidade de desenho do
sistema
Desenho Orientado a Objetos
(OOD)
• Modelagem de um sistema de software
que implemente os requisitos
identificados utilizando classes e
objetos.
– Modelo de Objetos
Benefícios da OOD
• Mapeamento simplificado do domínio do
problema
• Menor esforço de análise
• Melhor produtividade no mapeamento
direto para Linguagens Orientadas a
Objeto
Programação Orientada a
Objetos (OOP)
• Forma de programação que faz uso de
conceitos e componentes inerentes do
paradigma de orientação a objetos
– Componentes de OOP
– Propriedades de OOP
Componentes de OOP
• Componentes de OOP
– Objetos
– Classes
– Instâncias
– Métodos
– Mensagens
Benefícios de OOP
•
•
•
•
Simplicidade de implementação
Reutilização de código
Desenvolvimento evolutivo
Manutenção (em teoria) mais simples
Objeto
• Def.: Objeto é uma abstração composta
por dados e operações correlatos. Cada
objeto possui:
– Identidade
– Estado
– Comportamento
Identidade do Objeto
• Def.: Identidade é o mecanismo que
distingue um objeto dos demais.
– A identidade do objeto se mantém mesmo
que seu estado seja alterado
Estado do Objeto
• Def.: Estado de um objeto é o dado
armazenado no objeto e modificado por
meio dos operações (métodos)
suportados pelo objeto.
– Características herdadas ou próprias do
objeto
Comportamento do Objeto
• Def.: Comportamento de um objeto é
um conjunto de operações (métodos)
que o objeto suporta para alterar o seu
estado, assim como as invariantes que
estes métodos satisfaçam.
– Modo como um objeto age e reage à
estímulos externos
Programaticamente
• Objeto é uma estrutura composta por
variáveis e métodos relacionados.
– Identidade – endereço de memória
(maioria das linguagens)
– Estado – variáveis
– Comportamento – métodos
Representação
Classe
• Def.: Classe representa uma
especificação de tipo de objeto,
definindo os dados e operações que
cada objeto pode possuir.
Programaticamente
• Classe é uma descrição de um tipo de
objeto, onde são definidas suas
variáveis e métodos.
Representação
Instância
• Def.: Cada objeto é dito ser uma
instância de uma classe.
– cada instância (objeto) de uma classe
possui seu próprio estado, mas apresentam
as mesmas definições de estado e
comportamento que as demais instâncias
da classe.
Programaticamente
• Objetos são instâncias de uma classe
particular.
Método
• Def.: O comportamento de um objeto é
expresso por meio de seus métodos,
onde são definidas todas as formas
interações possíveis com o objeto.
Programaticamente
• Um método é uma implementação
específica de uma operação para uma
certa classe.
Mensagem
• Def.: Uma mensagem é uma
informação que é enviada de um objeto
para outro.
– Troca de mensagens é a forma de
comunicação entre objetos
Programaticamente
• Uma mensagem corresponde a uma
chamada a um método de um objeto.
Representação
Propriedades de OOP
•
•
•
•
Abstração
Encapsulamento
Herança
Polimorfismo
Abstração
• Consiste de, mentalmente, separar os
aspectos essenciais e inerentes de um
elemento (coisa, elemento, etc) de um
conjunto ou totalidade mais complexa.
Programaticamente
• Exame seletivo de determinados
aspectos de um problema, isolando os
mais importantes e suprimindo os que
não forem
– Redução de escopo
– Foco no essencial
Encapsulamento
• Consiste em separar os aspectos
externos de um objeto, acessíveis por
outros objetos, dos detalhes internos de
implementação do objeto, que
permanecem ocultos dos demais
objetos.
Programaticamente
• Cada tipo de objeto especifica uma
interface através da qual outros objetos
podem interagir com ele
– somente através dos métodos internos do
objeto pode-se acessar seu estado
– objetos não podem alterar o estado interno
de outros objetos de maneira inesperada
Herança
• Mecanismo que permite que
características de estado e
comportamento sejam compartilhadas
entre classes segundo um
relacionamento hierárquico
Programaticamente
• Classes podem ser definidas como
extensões de uma classe existente
– Hierarquia de classes
Polimorfismo
• Propriedade pela qual uma mesma
operação representa comportamentos
diferentes em classes diferentes.
Programaticamente
• Classes distintas podem implementar o
mesmo método de maneiras distintas.
Linguagens OOP (OOPL)
• Linguagem que permita suporte, em
algum grau, aos conceitos de OO
– Linguagens OO “puras” – desenvolvidas
para facilitar (até mesmo forçar)
programação OO
– Linguagens híbridas – linguagens
estruturadas estendidas para suporte OO
Algumas OOPLs
–
–
–
–
–
–
–
–
–
Simula (1967) – Norwegian Computing Centre
Smalltalk (1971) - Xerox PARC
Modula-2 (1978) – ETH
Eiffel (1985) – Interactive Software Engineering
C++ (1985) – Bell Labs
VB (1991) - Microsoft
Delphi (1995) – Borland
Java (1995) – Sun Microsystems
C# (2001) - Microsoft
Download