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

Intro Classes Constr

O documento discute conceitos fundamentais de programação orientada a objetos em Java, como classes, objetos, encapsulamento, métodos get e set, notação UML, inicialização e escopo de variáveis. É apresentado um exemplo de classe Professor para ilustrar esses conceitos.

Enviado por

Chad Mauro
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 PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
24 visualizações14 páginas

Intro Classes Constr

O documento discute conceitos fundamentais de programação orientada a objetos em Java, como classes, objetos, encapsulamento, métodos get e set, notação UML, inicialização e escopo de variáveis. É apresentado um exemplo de classe Professor para ilustrar esses conceitos.

Enviado por

Chad Mauro
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 PDF, TXT ou leia on-line no Scribd
Você está na página 1/ 14

Algoritmos e Programação 2

Baseado no material do Prof. Júlio Machado

Objetos e Classes em Java

 Revisão
– Classes: encapsulam dados (atributos) e
operações sobre os dados (métodos)
– Objetos: instâncias de classes, têm estado
(definido pelos atributos) e comportamento
(definido pelos métodos)

Classes

 Definições de classes incluem


(geralmente):
– modificador de acesso
– palavra-chave class
– nome da classe
– atributos de instância
– métodos de instância

1
 Modificadores de acesso
– Permitem definir o encapsulamento de
atributos e métodos
– Dois modificadores principais:
• private: visível apenas na classe atual
• public: visível para qualquer classe externa

 Recomendações
– A menos que hajam razões fortes, os atributos de
uma classe devem ser definidos como private
(encapsulamento) e os métodos que são
chamados de fora da classe devem ser public
(interface de acesso).
– Métodos que devem ser usados somente dentro
da própria classe, devem ser especificados como
private.

Encapsulamento

 Objetivo:
– Esconder como as coisas funcionam por
trás de uma interface de acesso.
 Implementado através dos
modificadores de acesso.

2
 Métodos get
– Retornam o valor dos atributos de um
objeto, uma vez que não é possível acessá-
los diretamente.
 Métodos set
– Permitem alterar o valor de um atributo.
– Estes métodos são chamados por alguns
autores de transformadores.

Exemplo: classe Professor


public class Professor
{
private String nome;
private int matricula;
private int cargaHoraria;
private double salarioHora;
...
}
 Atributos estão encapsulados!!!
 Apenas métodos da própria classe
Professor podem acessar os atributos.

 Métodos:
...
public void setNome(String n) {
nome = n;
}
public String getNome() {
return nome;
}
public void setMatricula(int m) {
matricula = n;
}
public int getMatricula() {
return matricula;
}
...

3
...
public void setCargaHoraria(int c) {
cargaHoraria = c;
}
public int getCargaHoraria() {
return cargaHoraria;
}
public void setSalarioHora(double s) {
salarioHora = s;
}
public double getSalarioHora() {
return salarioHora;
}
public double getSalario() {
return salarioHora * cargaHoraria;
}
}

Notação Gráfica

 Para melhor visualizar e entender as


classes.
– Representação das classes
– Relacionamento entre as classes
 Exemplos: Booch, OMT, UML (Unified
Modeling Language)
Padrão Atual
(mais moderna,
mais usada)

 Notação UML
– Classe: retângulo dividido em três
partes
• primeira parte: nome da classe
• segunda parte: atributos
• terceira parte: métodos
Professor
– Atributos e métodos - nome: String
• private: - - matricula: int
- cargaHoraria: int
• public: + - salarioHora: double
+ setNome (n: String)
+ getNome ( ): String
+ setMatricula (m: int)
+ getMatricula( ): int
+ setCargaHoraria (c: int)
+ getCargaHoraria( ): int
+ setSalarioHora(s: double)
+ getSalarioHora( ): double
+ getSalario( ): double

4
 Instanciação
– Um objeto depois de criado, conterá todos
os atributos e métodos descritos em sua
classe.
– Para instanciar um objeto em Java
utilizamos o operador new.
– Ex.:
Professor prof1;
prof1 = new Professor();
prof1:Professor

prof1 NULL prof1 nome=null


matricula=0
cargaHoraria=0
salarioHora=0.0

 Para “matar” um objeto em Java se


utiliza null
– Exemplo: Professor prof1;
prof1 = new Professor();
prof1 = null; // coletor de lixo

prof1 NULL prof1:Professor

nome=null
prof1 matricula=0
cargaHoraria=0
salarioHora=0.0

prof1 NULL

 Quando o operador new é usado é


“alocada” memória.
 Quando um objeto não é mais
necessário, devolve-se o(s) recurso(s)
para o sistema.
 Java realiza a coleta de lixo automática
da memória (garbage collector).
 Quando um objeto não é mais utilizado,
ele é marcado para coleta de lixo.

5
 Como executar um programa em Java?
– Um programa é composto de várias
classes e objetos.
– Como indicar por onde o programa
começa?
– Em Java temos um método especial que o
interpretador assume como o início do
programa: main.
• public static void main (String args[ ])

public static void main (String


args[]){
Professor prof1;
prof1 = new Professor();
prof1.setNome(“Júlio”);
prof1.setMatricula(1234);
prof1.setCargaHoraria(14);
System.out.println(prof1.getCa
rgaHoraria());
}

Escopo de Variáveis
 O escopo de uma variável informa onde
ela pode ser utilizada.
 Ex.:
1: public class VerificaEscopo{
2: private int escopoA;
3: public void metodo(int escopoB){
4: int escopoC;
5: }
6: }

6
– escopoA é atributo da classe e seu escopo
vale em qualquer lugar a partir da linha 1
– escopoB e escopoC são variáveis locais
cujo escopo é válido somente dentro do
método

Inicialização de Variáveis
 Atributos de uma classe são
inicializados com valores padrão:
– 0 -> byte, short, int, long
– 0.0 -> float, double
– false -> boolean
– \u0000 -> char
– null -> Object

 Variáveis locais declaradas dentro de


métodos devem obrigatoriamente
serem inicializadas.
– O compilador Java irá indicar se não
inicializarmos as variáveis.
 Ex.:
class Aluguel {
private int numero;
public void adicItem(){
float itemCusto;
int numDias;
System.out.println("Numero="+numero); //OK
System.out.println("ItemCusto="+itemCusto); //Erro
}
}

7
Referências
 Quando criamos um objeto em Java,
mantemos uma referência para o objeto
na memória.
 Ex.:
Professor prof1, prof2;
prof1 = new Professor();...
prof2 = new Professor();...
prof1:Professor prof2:Professor

prof1 nome="Júlio" prof2 nome="Isabel"


matricula=123 matricula=321
cargaHoraria=14 cargaHoraria=40
salarioHora=21.5 salarioHora=21.5

 Ao atribuir prof1 ou prof2 a uma terceira


variável, o que irá acontecer?
 Ex.:
Professor prof1, prof2, prof3;
prof1 = new Professor();...
prof2 = new Professor();...
prof3 = prof1;

prof1:Professor prof2:Professor

nome="Júlio" nome="Isabel"
prof1 matricula=123 prof2 matricula=321
cargaHoraria=14 cargaHoraria=40
salarioHora=21.5 salarioHora=21.5
prof3

 Se alteramos algum atributo do objeto


referenciado por prof3, estaremos
alterando também o referenciado por
prof1!
 Ex.:
Professor prof1, prof2, prof3;
prof1 = new Professor();...
prof2 = new Professor();...
prof3 = prof1;
prof3.setCargaHoraria(12); prof1:Professor

prof1 nome="Júlio"
matricula=123
cargaHoraria=12
prof3 salarioHora=21.5

8
Exercícios

1) Escreva um método para a classe


Professor que imprima todos os dados
de um determinado professor.
– Nome: Maria
Matrícula: 234
Carga Horária: 8
Salário/Hora: 20.00
Salário: 160.00

2) Escreva uma classe Contador, que


apresente métodos para informar o
valor inicial, incrementar, decrementar e
exibir o valor atual na tela.
3) Exemplifique a utilização desta classe
criando uma aplicação que crie vários
contadores e use os métodos definidos.
– Por exemplo, crie 3 contadores e chame
alguns métodos para
incrementar/decrementar o contador. No
final, exiba o valor de cada contador.

Inicialização de Objetos
 Objetos:
– Estado: definido pelos atributos declarados
na classe
– Comportamento: definido pelos métodos
declarados na classe
 Quais valores os atributos do objeto
possuem após a sua instanciação?
 Como definir o estado inicial do objeto?

9
 Exemplo: classe Circulo
public class Circulo {
private int centrox;
private int centroy;
private int raio;
public double area(){
return (3.14 * raio * raio);
}
public double circunferencia(){
return (2 * 3.14 * raio); Circulo
} -centrox:int
public int diametro(){ -centroy:int
return (2 * raio); -raio:int
} +area():double
} +circunferencia():double
+diametro():int

Circulo circ = new Circulo();

circ:Circulo circ:Circulo

centrox=??? centrox=0
centroy=??? centroy=0
raio=??? raio=0

 Inicialização padrão de atributos:


– byte, short, int, long: 0
– float, double: 0.0
– char: \u0000
– boolean: false
– Object: null

 Da forma como foi apresentada a


classe Circulo, todos os objetos criados
a partir dela terão seus atributos
inicializados com valores padrão iguais
a zero.
 Como permitir que instâncias da classe
Circulo possuam estados diferentes?

10
Construtores

 O construtor é um código especial


responsável pela inicialização dos
atributos de instância de um objeto de
uma determinada classe.

 Um construtor em Java:
– Possui o mesmo nome da classe
(respeitando maiúsculas e minúsculas);
– Pode possuir ou não parâmetros;
– Não possui um tipo de retorno, nem mesmo
void.

<modificador_de_acesso> <nome_classe>(<parâmetros>)
{
//corpo do construtor
}

 Exemplo: classe Circulo


public class Circulo {
private int centrox;
private int centroy;
private int raio;
public Circulo(int x, int y, int r){
if (x >= 0) centrox = x;
else centrox = 0;
if (y >= 0) centroy = y;
else centroy = 0;
Circulo
if (r > 0) raio = r;
else raio = 1; -centrox:int
-centroy:int
}
-raio:int
...
+Circulo(x:int, y:int, r:int)
} +area():double
+circunferencia():double
+diametro():int

11
Circulo circ = new Circulo(5,1,1);

circ:Circulo circ:Circulo

centrox=??? centrox=5
centroy=??? centroy=1
raio=??? raio=1

 Quando um objeto é instanciado:


– Operador new aloca a memória
necessária;
– Construtor é invocado automaticamente
para inicializar os atributos do objeto.

Construtor Default
 Se nenhum construtor é definido para
uma determinada classe, Java irá
definir um construtor padrão (chamado
construtor default)
– Não possui argumentos de entrada e não
faz nada.
– Foi o construtor utilizado até agora!
– Caso qualquer construtor seja definido na
classe, Java não irá disponibilizar o
construtor default.

 Exemplo: classe Circulo


Circulo
-centrox:int
-centroy:int
-raio:int
+Circulo(x:int, y:int, r:int)
+area():double
+circunferencia():double
+diametro():int

Circulo circ = new Circulo(); Inválido


Circulo circ = new Circulo(1,1,1); Válido

12
Exercícios
1) Adicione os seguintes comportamentos à
classe Circulo:
- mover um circulo para qualquer posição;
- aumentar o tamanho de um círculo em uma
unidade;
- diminuir o tamanho de um círculo em uma
unidade;
- informar uma representação textual do círculo,
contendo seu ponto central e raio;

2) Defina novos construtores para a


classe Circulo com as seguintes
características:
- receba como parâmetros o ponto X e Y
para o centro; para o raio utilizar o valor
padrão 1
- receba como parâmetro o raio; para o
ponto X e Y utilizar o valor padrão 0
- receba como parâmetro um outro
círculo, gerando uma cópia do mesmo

3) Reimplemente a classe Professor


desenvolvida anteriormente para incluir
a inicialização de objetos via
construtores.

13
4) Suponha que uma casa é formada por 3 peças: uma
cozinha circular, uma sala retangular e um banheiro
quadrado. Vamos implementar um programa que
permita definir as dimensões das peças da casa e
calcular sua área. Para tanto implemente as
seguintes classes:
- classe Cozinha: um método que calcula a área da
cozinha, e os atributos e demais métodos
necessários para isto;
- classe Sala: um método para cálculo da área, e os
atributos e demais métodos necessários para tanto;
- classe Banheiro: idem.
- classe Casa: que tenha 3 atributos (para as três
peças da casa), um método para calcular a área da
casa, e os atributos e demais métodos necessários.
- uma aplicação (uma classe com o método main() )
que instancie 3 casas, calcule e exiba suas áreas.

14

Você também pode gostar

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy