90 likes | 201 Views
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).
E N D
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) http://www.marcelocoelho.com.br/monitoria/poo/2012_2/criando-e-instanciando-uma-classe-com-construtor-vazio.ppt
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”, null String modelo; //ex: “Uno”, “Ka”, null intqtdeRodas; //ex: 4, 2, 0 String 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 classVeiculo{ //atributos String marca; String Modelo; intqtdeRodas; String cor; Isto não é necessário, mas vamos deixá-lo aqui por questões Didáticas, ok? //contrutores publicVeiculo() { } } Próximo
A nossa classe “Teste”: public classTeste{ Veremos o que essas coisas significam DEPOIS, ok? //método main publicstatic voidmain(String[] args) { Por hora, tenha em mente que você precisa de apenas um método “main” em todo o sistema para poder “dar a partida” no seu programa! //ele poderia estar em qualquer classe, //é aqui que iremos “chamar” as //mas optei por fazer uma exclusivamente //outras classes do sistema //para ele (a classe “Teste”)... } } Próximo
Ilustração do que acontece na “memória” ao criarmos variáveis de tipos primitivos (int, boolean, double, etc...) x 5 a 2 public classTeste{ public classVeiculo{ //método main publicstatic voidmain(String[] args) { //atributos String marca; String Modelo; intqtdeRodas; String cor; int x; //declaramos uma variável do TIPO inteiro x = 5; //atribuimos o valor 5 a “x” //podemos fazer isso em um único “movimento”... //contrutores publicVeiculo() { } int a = 2; } Próximo } }
Ilustração do que acontece na “memória” ao criarmos variáveis de tipos NÃO primitivos (Veiculo, Animal, etc...) v2 marca:null modelo:null qtdeRodas: 0 cor:null 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! v1 marca:null modelo:null qtdeRodas: 0 cor:null public classTeste{ public classVeiculo{ //método main publicstatic voidmain(String[] args) { //atributos String marca; String Modelo; intqtdeRodas; String cor; //declaramos uma variável de referência //do TIPO Veiculo Veiculo v1; //criamos um objeto do tipo Veiculo com “new” //e usamos “v1” como referência para esse objeto //contrutores publicVeiculo() { } v1 = new Veiculo(); //podemos fazer isso em um único “movimento”... Veiculo v2 = new Veiculo(); } Próximo } }
Ilustração do que acontece na “memória” ao criarmos variáveis de tipos NÃO primitivos (Veiculo, Animal, etc...) v2 marca:null modelo:null qtdeRodas: 0 cor:null v1 marca:null modelo:null qtdeRodas: 0 cor:null v3 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! public classTeste{ public classVeiculo{ //método main publicstatic voidmain(String[] args) { //atributos String marca; String Modelo; intqtdeRodas; String cor; Veiculo v1; v1 = new Veiculo(); Veiculo v2 = new Veiculo(); //podemos declarar outra referência do tipo “Veiculo” Veiculo v3; //contrutores publicVeiculo() { } //e usá-la também para referenciar o mesmo objeto // referenciado por “v2” v3 = v2; } Próximo } }
Praticando e explorando Experimente executar o mesmo exemplo sem a minha presença! O que você acha que aconteceu? public classVeiculo{ //atributos String marca; String Modelo; intqtdeRodas; String cor; Você percebeu alguma diferença ao executar o código? //contrutores publicVeiculo() { } }