0% acharam este documento útil (0 voto)
2 visualizações32 páginas

JavaBasico Aula2

O documento apresenta um treinamento básico sobre Java, focando no paradigma de programação orientada a objetos (OO). Ele aborda conceitos fundamentais como classes, objetos, herança, encapsulamento, polimorfismo e estratégias de resolução de problemas. Além disso, inclui exercícios práticos para aplicação dos conceitos aprendidos.

Enviado por

jbarbosa
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PPT, PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
2 visualizações32 páginas

JavaBasico Aula2

O documento apresenta um treinamento básico sobre Java, focando no paradigma de programação orientada a objetos (OO). Ele aborda conceitos fundamentais como classes, objetos, herança, encapsulamento, polimorfismo e estratégias de resolução de problemas. Além disso, inclui exercícios práticos para aplicação dos conceitos aprendidos.

Enviado por

jbarbosa
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PPT, PDF, TXT ou leia on-line no Scribd
Você está na página 1/ 32

Hiromiti Nakagawa – Treinamento Java Básico

Julho, 2013

Java Básico

© 2009 IBM Corporation


Treinamento Java Básico

Agenda

Orientação a Objetos
Exercícios

2 © 2009 IBM Corporation


Orientação a Objetos

 Paradigma de programação
– Modelo ou padrão que orienta a forma como desenvolvedores de software analisam problemas e
definem soluções para estes problemas
– No paradigma OO a estratégia de desenvolvimento baseia-se no conceito que sistemas devem ser
construídos a partir de uma coleção de componentes reusáveis, chamados de objetos, que
englobam dados e funcionalidade (contrastando com o paradigma procedural que separa dados e
funcionalidades)
 Um programa Orientado a Objetos consiste de uma coleção de objetos interagindo entre si
 Classes representam tipos de dados complexos e englobam estado (variáveis) e operações (métodos)
 Objetos são instâncias de uma classe e trabalham em conjunto para produzir os resultados esperados:
– Recebem mensagens
– Processam dados
– Enviam mensagens
– Desempenham um papel específico e bem definido
 Estratégias
– Paradigma Procedural: quais são as instruções e procedimentos necessários para resolver o
problema?
– Paradigma Orientado a Objetos: que objetos do domínio do problema devo abstrair para resolver o
problema?
– Paradigma Lógico: quais são as regras lógicas - proposições - do problema?
– Paradigma Funcional: como decompor o problema em funções e organizá-lo recursivamente?

3 © 2009 IBM Corporation


Orientação a Objetos

 Modelo computacional
– Dividir para conquistar
Entrada Programa Saída

Estado

Entrada Programa Saída Entrada Programa Saída Entrada Programa Saída

.. .. ..
Estado Estado Estado

4
. . .© 2009 IBM Corporation
Orientação a Objetos

 Solucionando problemas usando OO


– Assemelha-se com a forma como humanos resolvem problemas do dia a dia:
• Identificar o problema
• Identificar quais objetos são necessários para resolver o problema
• Definir como usar esses objetos em sequência para obter o resultado desejado
– OO:
• Identificar o problema
• Identificar os objetos necessários para resolver o problema, como usá-los e em que
sequência
• Identificar as mensagens (operações)
• Criar a sequência de mensagens necessárias para resolver o problema

5 © 2009 IBM Corporation


Orientação a Objetos

 Estrutura o código de maneira mais eficaz e ajuda a resolver problemas enfrentados do


paradigma procedural
– Repetição de código
– Complexidade de manutenção do código
– Legibilidade do código (métodos extensos)
– Dados e funcionalidade não são conectados
– Código altamente dependente (sem separação de papéis ou responsabilidades)
 Vantagens:
– Eficiência
– Modelagem “natural”, aproximando aplicações do mundo real
– Paradigma dominante e bem estabelecido
– Classes estimulam projeto centrado em dados: modularidade, reusabilidade e
extensibilidade
– Aceitação comercial crescente
– Código mais facil de entender
– Maior grau de reuso
– Facilita a manutenção

6 © 2009 IBM Corporation


Orientação a Objetos

 Classe
– Tipo de dados complexo
– Abstrai características (atributos) e comportamentos
(métodos) comuns a um conjunto de objetos
– Possui nome, atributos (característica/estado) e métodos
(operações)

 Objetos
– Instância de uma ou mais classes
– Possui características e comportamentos

7 © 2009 IBM Corporation


Orientação a Objetos

 Atributo
– Representa um estado ou característica de um objeto
– Declarados no corpo da classe (variáveis de instância)
• Cada objeto instanciado possui seu próprio conjunto de atributos
– Valores atribuídos aos atributos de uma classe distinguem um objeto de outro

 Método
– Representam comportamentos que um objeto pode ter
– Define operações que um objeto pode realizar/participar
– Têm acesso aos atributos definidos para a classe
– Local onde se define o código que faz o processamento dos dados
– Um método representa uma mensagem que o objeto pode receber e tratar

8 © 2009 IBM Corporation


Orientação a Objetos

 Abstração
– Categorização com base em atributos (características) comuns a um conjunto de
objetos relacionados
– Foco no que é comum, especificidades de lado
– Uma classe OO é uma abstração de um conjunto de objetos
– Exemplo:
• Vectra, Uno, Fusca, Ferrari F50
formam um conjunto de objetos
que podem ser abstraídos em uma
categoria Carro com atributos
como motor, ano, modelo, marca,
número de passageiros, etc

9 © 2009 IBM Corporation


Orientação a Objetos

 Herança
– Permite que uma classe herde as características e comportamentos de outra classe
– A classe herdeira pode modificar características ou comportamentos, estendendo-as ou
customizando-as
– Estabelece uma relação do tipo “é um” (is a)
– Facilita a abstração
– Exemplo:
• A classe Pessoa (subclasse) pode herdar características e
comportamentos da classe Animal (superclasse):
nome, idade, genero, andar, comer. Mas ela pode definir características e
comportamentos que se aplicam apenas a objetos do tipo Pessoa: CPF, RG,
escolaridade, ler, estudar.

1 © 2009 IBM Corporation


0
1 © 2009 IBM Corporation
1
Orientação a Objetos

 Abstração e Herança

1 © 2009 IBM Corporation


2
Orientação a Objetos

 Abstração e Herança
– Todos os celulares possuem certas características
(atributos) e funcionalidades (métodos) em
comum, independente de suas características e
funcionalides específicas

1 © 2009 IBM Corporation


3
Orientação a Objetos

 Abstração e Herança

1 © 2009 IBM Corporation


4
Orientação a Objetos

 Construtores
– São métodos especiais destinados à instanciação e inicialização de novos objetos
Obrigatóriamente devem ter o mesmo nome que a classe
– Não é obrigatório a presença do mesmo em uma classe
• Se não houver nenhum construtor, o compilador adicionará um construtor Default,
sem parâmetros
– São acionados através do new() na instânciação de um objeto da classe

public class Person extends Animal {


public Person() {}
public Person(String name, String gender, int age){
this.name = name;
this.gender = gender;
this.age = age;
}
}

1 © 2009 IBM Corporation


5
Orientação a Objetos

 this
– Representa o objeto/instancia corrente
– Usado para resolver conflitos de escopo de métodos e atributos quando se
sobreescreve métodos ou se faz shadowing de variáveis
 super
– Representa o objeto/instancia da superclasse
– Permite referenciar atributos e métodos da superclasse
 this()
– Invoca o construtor da classe atual
 super()
– Invoca o construtor da superclasse

1 © 2009 IBM Corporation


6
1 © 2009 IBM Corporation
7
Orientação a Objetos

 Modificadores
– static
• Recursos static pertencem à classe em si e não a instância da classe (objeto)
• Todos os objetos compartilham atributos static (similar à variável global do paradigma
procedural)
• Métodos e atributos static podem ser acessados por métodos normais (de instância) mas o
contrário não é verdade
every object calling static methods will face the same behavior
Dog.myStaticMethod();

Dog dogInstance = new Dog();


dogInstance.myInstanceMethod();

– final
• Pode ser utilizado em um atributo ou método
Atributo: uma vez que o valor é atribuído não é possível alterar ou atribuir
outro valor
Método: não podem ser sobreescritos

1 © 2009 IBM Corporation


8
Orientação a Objetos

 Agregação / Composição
– Relacionamento entre duas classes do tipo “tem-um” (has-a)
• Um Carro tem-um Motor
• Uma Casa tem-um Porta
– Representa a situação em que uma classe é agregada por ou composta de outra classe
• Composição: estabelece uma relação todo-parte no qual a parte não existe fora do
contexto do todo
• Agregação: a parte existe for a do contexto do todo
– Implementado por meio de variáveis de instancia do tipo que representa a parte,
definidas na classe que representa o todo

public class Parte{



}

public class Todo{


Parte partVar = new Parte();

}

1 © 2009 IBM Corporation


9
Orientação a Objetos

 Encapsulamento
– Objetos interagem apenas por meio de mensagens: sem acesso direto aos dados
– Objetos só conhecem a interface (conjunto de mensagens disponíveis) de outro objeto
– Atributos e lógica de implementação não podem ser acessados por outros objetos
– Mecanismo que visa proteger os dados: utilizando métodos que operam sobre os dados,
impedindo o acesso direto e indevido aos atributos de um objeto
• Modificadores de acesso restritivos sobre os atributos definidos na classe
• Definir métodos que manipulam os valores destes atributos
– Exemplo: Saldo da conta bancária
• O saldo certamente não pode ser alterado ou manipulado diretamente, mas sim
através de métodos adequados para isso, como métodos que fazem lançamentos
de débitos e créditos

2 © 2009 IBM Corporation


0
Orientação a Objetos

 Modificadores de acesso
– Determinam a visibilidade dos membros (atributos e métodos) da classe e da própria
classe
– Devem ser usados na declaração dos membros ou da classe
– Ao todo são quatro modificadores: public, protected, default e private

p u b lic p ro te c te d d e fa u lt p riva te
Pode ser acessado Pode ser acessado Pode ser acessado Pode ser acessado
p o r to d o m u n d o p o r s u b c la s s e s e p o r c la s s e s d o a p e n a s p e la
c la s s e s d o m e s m o m e s m o p a c o te p ró p ria c la s s e
p a c o te

2 © 2009 IBM Corporation


1
Orientação a Objetos

 Modificadores de acesso

2 © 2009 IBM Corporation


2
Orientação a Objetos

2 © 2009 IBM Corporation


3
Orientação a Objetos

 Polimorfismo
– Permitem que objetos de classes diferentes respondam a uma mesma mensagem
– Denota uma situação na qual um objeto pode se comportar de maneiras diferentes ao
receber uma mensagem, dependendo da classe utilizada para instanciar o objeto
– Utiliza:
• Herança
• Reescrita (overriding) de métodos das superclasses nas subclasses
– Duas subclasses de uma mesma classe podem ter implementações completamente
diferentes de um mesmo método, o que leva os objetos a se comportarem de forma
diferente
– Exemplo:
• Podemos imaginar um programa que faça a impressão de um relatório por meio de
uma classe chamada Impressora, que é uma interface de acesso às funcionalidades
da impressora usada, por meio de um driver fornecido pelo fabricante. Uma
impressora a laser tem um mecanismo de impressão totalmente diferente de uma
impressora a jato de tinta, mas isso não importa para o programa. Ele manda uma
simples mensagem de imprimir para a impressora e o modo como a impressora
imprime no papel varia de acordo com o tipo de impressora usada, ou seja, a
impressão se dá de formas diferentes para a mesma mensagem de imprimir.

2 © 2009 IBM Corporation


4
Orientação a Objetos

2 © 2009 IBM Corporation


5
Treinamento Java Básico

Agenda

Orientação a Objetos
Exercícios

2 © 2009 IBM Corporation


6
Exercícios

 Implemente uma classe chamada Circulo da seguinte forma:


– Duas variáveis de instancia: raio (do tipo double) e cor (do tipo String) com valores
default 1.00 e “vermelho” respectivamente
– Dois construtores: o default e um sobrecarregado que recebe o raio do circulo como
parâmetro
– Um método publico: calcularArea();
 Crie um método main() que utilize a classe Circulo
 Crie uma superclasse chamada FormaGeometrica com um método calcularArea() que
servirá para o calculo da área da forma geométrica com base em suas dimensões. Faça a
classe Circulo ser subclasse de FormaGeometrica.
 Crie mais três classes: Quadrado, retangulo e triangulo, definindo para cada uma dessas
classes as dimensões necessárias para o cálculo da área. Sobreescreva o método
calcularArea() que retorne o valor da área da respectiva forma geométrica. Faça as
heranças conforme achar mais indicado para tirar proveito do reuso.
– Quadrado: lado
– Retangulo: base, altura
– Triangulo: base, altura

2 © 2009 IBM Corporation


7
Exercícios

2 © 2009 IBM Corporation


8
Exercícios

2 © 2009 IBM Corporation


9
Exercícios

3 © 2009 IBM Corporation


0
Exercícios

3 © 2009 IBM Corporation


1
Exercícios

3 © 2009 IBM Corporation


2

Você também pode gostar