noções (super) básicas de oo
DESCRIPTION
UFRPE – Monitoria de Programação 2012.2. Noções (super) básicas de OO. (PARTE 01). Criando e instanciando uma classe com um construtor vazio (utilizando JAVA). Professor: Leandro Marques. (material produzido pelo monitor Marcelo Coelho). - PowerPoint PPT PresentationTRANSCRIPT
Noções (super) básicas de OO
Criando e instanciando uma classe com um construtor vazio
(utilizando JAVA)
UFRPE – Monitoria de Programação 2012.2
Professor: Leandro Marques
(material produzido pelo monitor Marcelo Coelho)http://www.marcelocoelho.com.br/monitoria/poo/2012_2/criando-e-instanciando-uma-classe-com-construtor-vazio.ppt
(PARTE 01)
ATENÇÃO!Este material NÃO se propõe a ser
um curso de programação orientada a objetos ou de JAVA!
A minha intenção é de apenas TENTAR sanar algumas dúvidas
trazidas pelos colegas nos nossos encontros de monitoria.
Próximo
Revisando...
• Na nossa classe de exemplo (Veiculo¹), criaremos os seguintes atributos:
String marca; //ex: “Fiat”, “Ford”, nullString modelo; //ex: “Uno”, “Ka”, nullint qtdeRodas; //ex: 4, 2, 0String cor; //ex: “azul”, “verde”, null
Próximo¹ Evitaremos o uso de acentuação nos identificadores de classes e variáveis.
A nossa classe “Veiculo”:public class Veiculo {
//atributosString marca;String Modelo;int qtdeRodas;String cor;
//contrutorespublic Veiculo() {
}
}
Isto não é necessário,mas vamos deixá-loaqui por questões
Didáticas, ok?
Próximo
A nossa classe “Teste”:public class Teste {
//método main public static void main(String[] args) {
}
Veremos o queessas coisas significam
DEPOIS, ok?
}
Por hora, tenhaem mente quevocê precisa deapenas um método“main” em todo osistema para poder“dar a partida” no seu programa!
//ele poderia estar em qualquer classe,//mas optei por fazer uma exclusivamente//para ele (a classe “Teste”)...
//é aqui que iremos “chamar” as
//outras classes do sistema
Próximo
public class Teste {
//método main public static void main(String[] args) {
} }
public class Veiculo {
//atributosString marca;String Modelo;int qtdeRodas;String cor;
}
//contrutorespublic Veiculo() {
}
Ilustração do que acontece na “memória” ao criarmos variáveis de tipos primitivos (int, boolean, double, etc...)
int x; //declaramos uma variável do TIPO inteiro
x
x = 5; //atribuimos o valor 5 a “x”
5
//podemos fazer isso em um único “movimento”...
int a = 2;
2a
Próximo
public class Teste {//método main public static void main(String[] args) {
} }
public class Veiculo {
//atributosString marca;String Modelo;int qtdeRodas;String cor;
}
//contrutorespublic Veiculo() {
}
Ilustração do que acontece na “memória” ao criarmos variáveis de tipos NÃO primitivos (Veiculo, Animal, etc...)
//declaramos uma variável de referência
v1
v1 = new Veiculo(); //podemos fazer isso em um único “movimento”...
v2
Veiculo v1; //do TIPO Veiculo
//criamos um objeto do tipo Veiculo com “new”//e usamos “v1” como referência para esse objeto
Veiculo v2 = new Veiculo();
marca: nullmodelo: nullqtdeRodas: 0cor: null
marca: nullmodelo: nullqtdeRodas: 0cor: null
Próximo
Quando o “new”, foi utilizado, eu (o construtor
da classe “Veiculo”) fui chamado para realizar a
criação do objeto. Em outras palavras: a classe
“Veiculo” foi instanciada!
public class Teste {//método main public static void main(String[] args) {
} }
public class Veiculo {
//atributosString marca;String Modelo;int qtdeRodas;String cor;
}
//contrutorespublic Veiculo() {
}
Ilustração do que acontece na “memória” ao criarmos variáveis de tipos NÃO primitivos (Veiculo, Animal, etc...)
v1
v1 = new Veiculo();
v2
Veiculo v1;
Veiculo v2 = new Veiculo();
marca: nullmodelo: nullqtdeRodas: 0cor: null
marca: nullmodelo: nullqtdeRodas: 0cor: null
Próximo
//podemos declarar outra referência do tipo “Veiculo”
v3
Veiculo v3;//e usá-la também para referenciar o mesmo objeto // referenciado por “v2”v3 = v2;
Perceba que eu (o construtor) não fui acionado pela última linha da classe
“Teste” ( cláusula “new” inexistente), portanto nenhum objeto foi criado. O que ocorreu foi apenas a criação de
uma (outra) referência para um objeto já existente!
Praticando e explorando
}
public class Veiculo {
//atributosString marca;String Modelo;int qtdeRodas;String cor;
//contrutorespublic Veiculo() {
}
Experimente executar o mesmo
exemplo sem a minha presença!
Você percebeu alguma
diferença ao executar o
código?
O que você acha que
aconteceu?