Programação I Aula 1 Prof. Gilberto Irajá Müller Última atualização 2/3/2009 Classe e Objeto • Classe • • • • • denominação para um conjunto de objetos onde os objetos se “enquadram” uma unidade de organização para sistemas de software abrange atributos e operações programas orientados a objetos são organizados por meio de classes [de objetos] • Objeto • qualquer “coisa” do mundo real • uma entidade física ou abstrata que faça sentido num contexto analisado • uma instância de uma classe • se caracteriza pelos atributos que possui e operações que pode realizar Classe e Objeto • Representação gráfica de uma classe pela UML (Unified Modeling Language) Nome da Classe Atributos Membros de uma classe Métodos Classe e Objeto • Sintaxe de uma classe em java modificadores class nome da classe { atributos métodos } Classe e Objeto • Atributo • Representam os dados que cada objeto da classe irá guardar. É a característica do objeto (conhecimento) • Métodos • São funções ou ações que um objeto pode executar sobre os seus atributos ou para propósitos gerais (comportamento) Classe e Objeto • Identificador (nome para os atributos/métodos/classes) • É composto por qualquer quantidade de letras, dígitos e os sinais _ e $, sendo que o primeiro deve ser uma letra ou um dos dois sinais (_ e $). • Java é case-sensitive, portanto, Aluno é diferente de aluno. • Cuide com palavras reservadas (class, private, void, String, ...) • Lembrem-se: • Na maioria dos casos, para o atributo, teremos um método “getter” (retorna a informação) e um método “setter” (atribui informação). Ex: getNome(), setNome(String nome) • Procurem colocar sempre o atributo e o método em minúsculo (o java é case-sensitive) • Para atributos/métodos com nome composto, a primeira palavra em minúsculo e, para as demais, a primeira letra em maiúsculo: • numeroContrato, dataNascimento, ... Classe e Objeto Em java teremos: Classe Pessoa nome altura peso getNome() setNome() getAltura() setAltura() getPeso() setPeso() calculaIMC() getIMC() class Pessoa { nome; altura; peso; } getNome() {} setNome() {} getAltura() {} setAltura() {} getPeso() {} setPeso() {} getIMC() {} calculaIMC() {} Em java ocorrerá erro, pois as instruções estão incompletas! Classe e Objeto • Visibilidade • As classes não vivem em isolamento. É importante determinar o nível de • • • • “visibilidade” dos membros em relação às demais classes Private (-) • Membro está “visível” apenas na própria classe • Na dúvida, utilize sempre “private” • Normalmente é utilizado em “atributos” Public (+) • Indica que o membro é acessível a partir de qualquer outra classe • Normalmente é utilizado em “métodos” Protected (# ou um desenho de uma chave) • O membro está “visível” para as sub-classes (veremos adiante) Package/Default (~) • O membro está “visível” para as classes do mesmo pacote (Programação II) • Todo membro de uma classe é sempre acessível dentro da própria classe. Classe e Objeto Classe terá visibilidade Classe Pessoa +nome - altura - peso + getNome() + setNome() + getAltura() + setAltura() + getPeso() + setPeso() - calculaIMC() + getIMC() Em java teremos: public class Pessoa { public nome; private altura; private peso; } public getNome() {} public setNome() {} public getAltura() {} public setAltura() {} public getPeso() {} public setPeso() {} private calculaIMC() {} public getIMC() {} Em java ocorrerá erro, pois as instruções estão incompletas! Classe e Objeto • Tipos de dados • Em java temos os tipos de dados que permitem definir QUAL TIPO DE INFORMAÇÃO um determinado atributo terá (ou um método retornará): • int (números inteiros) • double (números com casas decimais) • String (texto ou nomes) • Existem outros tipos de dados que diferenciam-se em relação ao potencial de armazenamento • long, short, byte, float, entre outros. • Métodos que não retornam informação (normalmente são os métodos “setters”) utilizam a palavra reservada void, que diz ao java: NÃO RETORNE INFORMAÇÃO • Void não é um tipo de dado! Classe e Objeto Em java teremos: Classe Pessoa +nome: String -altura: double public class Pessoa { public String nome; private double altura; private double peso; -peso: double + getNome(): String + setNome(): void + getAltura(): double + setAltura(): void + getPeso(): double + setPeso(): void - calculaIMC(): double + getIMC(): double } public String getNome() {} public void setNome() {} public double getAltura() {} public void setAltura() {} public double getPeso() {} public void setPeso() {} private double calculaIMC() {} public double getIMC() {} A estrutura de uma classe em java está definida! Precisaremos implementar os métodos! Classe e Objeto • Declaração de variáveis em JAVA • Sintaxe: • tipo nome; ou • tipo nome1, nome2, ..., nomeN; • Exemplos: • int i; • String nome, endereco; • Pessoa p1; (note aqui que estamos definindo uma variável chamada “p1” que é da classe Pessoa) Classe e Objeto • Atribuições de variáveis em JAVA • Sintaxe: • Nome da variavel = informação; • Exemplos: • i = 3; • endereco = “Avenida Unisinos, 950”; • Podemos também definir e atribuir variáveis: • int i = 3; • String endereco = “Avenida Unisinos, 950”; Classe e Objeto • Criando Objetos em java • Declaramos a variável com o tipo da classe que objeto corresponderá • Criamos o objeto (INSTANCIAMOS) utilizando a palavra reservada new • Exemplo Pessoa p1; (declara a variável do tipo Pessoa que é a nossa classe) p1 = new Pessoa(); (Aloca memória do computador para o novo objeto, ou seja, estamos INSTANCIANDO. Neste momento, a variável p1 terá um objeto do tipo Pessoa) Podemos definir e atribuir dessa forma (dois em um): Pessoa p1 = new Pessoa(); Classe e Objeto • Diagrama de Objetos p1 p2 Pessoa1 Pessoa2 nome: “João da Silva” altura: 1.80 peso: 80.0 nome: “Paulo Tricolor” altura: 1.75 peso: 70.0 EM JAVA TEREMOS: Pessoa p1 = new Pessoa() p1.setNome(“João da Silva”); p1.setAltura(1.80); p1.setPeso(80.0); Pessoa p2 = new Pessoa() p2.setNome(“Paulo Tricolor”); p2.setAltura(1.75); p2.setPeso(70.0); Classe e Objeto • Referências bibliográficas • http://inf.unisinos.br/~anibal • http://www.google.com.br • HORSTMANN, C. Big Java. Bookman, 2004. • DEITEL, H. M.; DEITEL, Paul J. Java: como programar. 6. ed. São Paulo: Pearson, 2006.