Slide 1 - WordPress.com

Propaganda
Linguagem de Programação – Aula 04
Prof. Me. Ronnison Reges Vidal
CONTEÚDO

2
Unidade 2 – Conceitos de Orientação a Objetos
 Abstração
 Classe
 Objeto
 encapsulamento
Introdução

Orientação a objetos
– pressupõe que o mundo é composto por objetos,
onde um objeto é uma entidade que combina
estrutura de dados e comportamento funcional. No
paradigma orientado a objetos, os sistemas são
criados a partir dos objetos que existem no domínio
do problema, isto é, os sistemas são modelados como
um conjunto de objetos que interagem entre si.
3
Introdução

O que são objetos no mundo
computacional ?
4
Objeto

Definição : Um objeto é a representação computacional de um
elemento ou processo do mundo real
Exemplos : cadeira, aula, venda, cliente …

Os objetos possuem características e comportamentos
– Cada característica ou propriedade é chamada de atributo do
objeto
• Por exemplo, o objeto moto tem como atributos cor, marca,
…
– Podemos sempre associar um conjunto de valores aos atributos.
• Exemplo : a cor da moto pode ser vermelha, azul, verde, etc.
5
Objeto

Cada comportamento é chamado de método do objeto
– Um comportamento representa uma reação ou
resposta de um objeto a uma ação do mundo real

Exemplos de comportamentos para o objeto moto :
acelerar, parar ...
6
Algumas características de
OO vistas nesta aula :

7
Classificação, abstração e encapsulamento.
Classificação

Objetos com as mesmas características (atributos e
métodos) são agrupados em uma classe

Cada classe define um conjunto possível e infinito de
objetos
– Exemplo : Analise as características de uma mesa.
Exemplo: número de pés, comprimento, etc. Analise
os métodos. Exemplo : mover, limpar. A partir da
identificação do conjunto de atributos e métodos
comuns a todas as mesas que já vimos, temos a
8
classe Mesa
Classificação

Note que a classificação depende do nível de abstração e
do ponto de vista (perspectiva) utilizado pelo
desenvolvedor

Quando criamos um objeto a partir de uma classe
dizemos que temos uma instância da classe

Por ser algo concreto, um objeto possui valores
associados aos atributos da classe a qual ele pertence.
9
Classificação

O estado de uma instância é definido pelos valores que
atribuímos aos seus atributos

Na programação OO, a ideia é que cada objeto seja
responsável por seus dados (valores dos atributos) e seja
capaz de executar os seus próprios métodos
(comportamentos).

Assim, podemos dizer que um objeto mantém seus
próprios dados e executa seus próprios métodos.
10
Métodos especiais

Criação e destruição de objetos de uma classe:
– A classe é responsável pela criação e destruição de
seus próprios objetos
– A criação de um objeto é realizada através de um
método especial chamado construtor
– A destruição de um objeto é realizada através de um
método especial chamado destrutor.
11
Abstração

Abstração procura focar as características essenciais de
um objeto, de acordo com a perspectiva do observador.
– Exemplo : objeto aluno

O que é relevante ? A cor do cabelo ou o estilo de roupa ?
Não ! Relevante : Matrícula,
– curso, etc...
12
Encapsulamento

Uma classe encapsula atributos e métodos, ocultando os
detalhes de implementação dos objetos

Princípio do desenvolvimento orientado a objetos: o
encapsulamento determina que a implementação de um
objeto somente deve ser acessada através de uma
interface visível e bem definida

Os atributos não podem ser manipulados diretamente. Os
atributos podem ser alterados ou consultados somente
através dos métodos do objeto.
13
Encapsulamento

Princípio do Encapsulamento:
– Atributos não devem ser visíveis por nenhum objeto
que não seja instância da própria classe ou de uma
classe descendente (herança)
– Assim, devemos declarar nossos atributos sempre
como protected ou private
14
Classes

As classes são os elementos básicos para construção de
programas OO em linguagens como C++, Java e C#. Assim,
para construir um programa OO devemos, inicialmente,
identificar as classes que fazem parte do problema que
estamos tentando resolver
– Ao analisar um problema a ser resolvido, as classes
normalmente são extraídas:
• 1. dos conceitos que compõem o domínio do problema;
• 2. dos conceitos adotados na solução do problema.
15
Classes

Explicar a ideia de pacote e lembrar do pacote da classe
Scanner

Sintaxe da definição de Classe:
[visibilidade] [abstract | final] class identificador
[extends identificador2]
[implements identificador3*] {
[Atributos]
[Métodos]
}
Também posteriormente, serão estudadas extends e
16
implements.
Visibilidade da classe:

public: pode ser livremente instanciada por qualquer outra
classe

private: só é visível no arquivo onde foi criada.

package: só pode ser instanciada por classes do mesmo
pacote. É a visibilidade default
17
Atributos

Atributos são declarados da mesma forma que as
variáveis locais, porém com uma sintaxe ligeiramente
diferente:
[visibilidade] [static] [final] tipo atributo [ = inicialização];
– visibilidade: public, private, package ou protected.
– static: define que esse atributo é da classe (será visto
posteriormente)
– final: atributo constante (valor inicial não pode ser
alterado)
18
Atributos

Atenção !! Em outras aulas veremos package, protected,
static e final

Nesta aula, portanto, nos interessa :
– public: pode ser livremente lido ou alterado por
métodos de qualquer classe
– private: só pode ser lido ou alterado por métodos da
própria classe, ou seja, esse atributo não é visível fora
da class
19
Inicialização de atributos:

Um atributo pode ser explicitamente inicializado, da
mesma forma que as variáveis locais.

Quando não for inicializado explicitamente, a máquina
virtual do Java (JVM) se encarregará de fazê-lo. Por
exemplo, valores numéricos com zero, boolean com falso
....
20
Inicialização de atributos:

Uma vez definida uma classe, podemos criar objetos ou
instâncias dessa classe

Para a criação de objetos usamos o operador new.
Teremos a partir daí, um objeto ou instância da classe.
Note que, ao declararmos uma variável do tipo de uma
classe não estamos criando o objeto em si, mas somente
uma referência para o objeto. No momento da declaração
da variável a referência está com valor null. Precisamos
usar new para que seja alocado espaço na memória para
o novo objeto
21
Inicialização de atributos:

Exemplo : Imagine uma classe Retangulo
– Retangulo r;
– r = new Retangulo();
Ou
– Retangulo r = new Retangulo();

Para definir como as instâncias de uma classe podem ser criadas
usamos construtores. Assim, podemos dizer que construtores são
métodos especiais usados para criar uma instância de uma classe
(objeto). Podem existir várias formas diferentes de criarmos um
objeto. Assim, podemos ter vários construtores diferentes para uma
mesma classe. Isso se chama sobrecarga (ou overload) de
22
construtores
Sintaxe básica de construtores:
public NomeDaClasse ([parâmetros]) [throws exceções]
{
[ corpo do construtor ]
}

Observe que:
– Construtores devem ter, obrigatoriamente, o mesmo nome da
classe
– Construtores não têm nenhum tipo de retorno
– Construtores podem receber parâmetros que serão usados na
inicialização do objeto
– Quando não definimos nenhum construtor para a classe, o Java
gera automaticamente um construtor default ou padrão.
23
Métodos de acesso e métodos
modificadores

Métodos de acesso são usados para obter os valores dos
atributos privados e métodos modificadores são usados
para alterar os valores dos atributos privados

Regra :
public tipo get<nome do atributo>()
{
return atributo;
}
24
Métodos de acesso e métodos
modificadores
public void set<nome do atributo>(tipo novoValor)
{
atributo = novoValor;
}
25
Sintaxe de métodos da Classe:
visibilidade [static] [final] [abstract] tipo método ([parâmetros])
[throws exceções]
{
[ corpo do método ]
}
– Visibilidade: public, private, package ou protected.
– static: método da classe (será visto posteriormente)
– final: método não pode ser sobrescrito (será visto
posteriormente)
– abstract: método deve ser implementado nas subclasses
26
(será visto posteriormente)
Exercícios

1) Imagine que desejamos implementar um editor gráfico que
irá manipular figuras
27

geométricas:

Retângulo

Triângulo

Círculo

Quais as classes candidatas para esse projeto ?
Exercícios

2) Sabendo que todo livro possui autor, editora e preço, crie
uma classe pública com construtor padrão e métodos
modificadores e de acesso. Depois, crie dois livros com dados
obtidos via console

3) Adicione código ao exercício anterior e altere os dados do
2o. livro da seguinte forma: autor para Harlan Coben, editora
Arqueiro e preço R$ 30,00

28
4) Adicione código ao ex. 2 e compare os preços dos dois
livros, imprimindo o nome da editora do livro de menor preço.
Download