Conceitos de OO em Java Parte I Curso de Linguagem Java Estrutura de uma classe Classe Propriedades class Pessoa { int idade; Pessoa conjuge; int qualIdade () { return idade; } Métodos void casar (Pessoa p) { conjuge = p; } } Linguagem Java 2 Classes Qualquer objeto do tipo Ponto possuirá dois atributos denominados xey Declaração: class Ponto { ... } Propriedades: dados que as instâncias da classe conterão: class Ponto { float x, y; } X=1 Y=1 Linguagem Java X=2 Y=2 X=3 Y=3 3 Instanciação de Objetos Toda classe criada pode ser usada na declaração de varíaveis (objetos). Exemplo: class Editor { public static void main (String arg[]) { Ponto p; int a = 2; Declaração de uma } variável p do tipo da } Declaração de uma variável a do tipo inteiro. classe Ponto. 2 Linguagem Java X=? Y=? 4 Instanciação de Objetos Dada uma classe, pode ser criada uma nova instância desta classe usando o comando new. Exemplo: class Editor { public static void main (String arg[]) { Ponto p = new Ponto(); } } Linguagem Java 5 Instanciação de Objetos class Editor { public static void main (String arg[]) { Ponto p = new Ponto(); } } p X=0 Y=0 Linguagem Java 6 Atribuição de valores As propriedades dos objetos podem ser manipuladas diretamente: p1 Ponto p1 = new Ponto(); p1.x = 1; p1.y = 2; // p1 representa o ponto (1,2) p2 Ponto p2 = new Ponto(); p2.x = 3; p2.y = 4; // p2 representa o ponto (3,4) Linguagem Java X=1 Y=2 X=3 Y=4 7 Atribuição de valores (cont.) Atenção !!! Declaração Ponto p1 = new Ponto(); p1.x = 1; Instanciação Atribuição Linguagem Java 8 Acessando membros de uma classe Membros de uma classe são suas propriedades e métodos. p1.x = 1; p1 . x Nome do Separador Nome do objeto Atributo Linguagem Java = 1 Valor atribuído ao atributo do objeto 9 Métodos Define o comportamento da classe. Declaração: class Ponto { int x, y; void mover ( int dx, int dy) { x += dx; y += dy; } } Linguagem Java 10 Tipos de Métodos class Pessoa { int a; MinhaClasse b; Métodos Construtores Pessoa() { … } Métodos Operacionais float Exemplo (int a) { … } } Linguagem Java 11 Métodos Construtores Devemos usar os métodos construtores quando queremos atribuir valores aos atributos de um objeto no momento de sua criação class Ponto { int x=0; int y=0; Ponto (int x, int y) { this.x = x; this.y = y; } } Linguagem Java 12 Assinatura de um método Construtor Ponto (int x, int y) Não possui Nome do método tipo de deve ser retorno igual ao nome da classe Parâmetros Linguagem Java 13 Uso de Construtores Deve ser usado no momento da criação do objeto: p1 Ponto p1 = new Ponto(1,2); X=1 Y=2 Ponto p2 = new Ponto(3,4); p2 X=3 Y=4 Linguagem Java 14 Método Construtor Exemplo class EditorGrafico { public static void main (String arg []) { Ponto p1, p2; p1 = new Ponto (1,2); p2 = new Ponto (3,4); } } Linguagem Java 15 Construtor Padrão A linguagem Java declara um construtor padrão, vazio, que não recebe nenhum parâmetro Quando declaramos um novo construtor, esse construtor padrão deixa de existir e é substituído pelo novo construtor Linguagem Java 16 Métodos Construtores Usados na criação de um objeto através do comando new Possuem o mesmo nome da classe Podem receber parâmetros que servirão para incialização dos atributos da classe Uma classe pode ter vários métodos construtores Linguagem Java 17 Métodos Construtores class Funcionario { String nomefunc; float salario; Funcionario (String nome,float sal) { salario = sal; nomefunc = nome; } ... … } Linguagem Java Método Construtor Outros Métodos 18 Exemplo class ProgramaPrincipal { public static void main (String arg[]) { Funcionario func; func = new Funcionario(“Juca”,102f); } Método Construtor } Linguagem Java 19 Métodos Operacionais Implementam as funções de uma classe Possuem sintaxe semelhante à sintaxe de definição das funções de um programa procedural Determinam o comportamento da classe e a troca de mensagens com outras classes Linguagem Java 20 Métodos Operacionais class Funcionario { String nomeFunc; float salario; ... float calcularSalario (int horas) { float salMes = 0; if (horas < 220) { salMes =(salario/220)*horas; } return salMes; } Assinatura Corpo Retorno } ... Linguagem Java 21 Assinatura de um método Operacional float Tipo de Retorno calcularSalario (int horas) Nome Linguagem Java Parâmetro 22 Exemplo class ProgramaPrincipal { public static void main (String arg[]) { float sal; Funcionario func; func = new Funcionario(“Juca”,2200); sal = func.calcularSalario(80); System.out.println (sal); } } func Executando o Método calcularSalario da classe Funcionario nomeFunc = “Juca” salario = 2200 ----------------calcularSalario(horas) sal = func.calcularSalario(80); Linguagem Java sal = (salario/220)*horas; sal = (2200/220)*80 sal = 800 23 Dinâmica de um Sistema Orientado a Objetos Estímulo Externo Resposta Linguagem Java 24 Interação entre Objetos Exemplo: Pintando um ponto na tela a1 e1 CLICK (GUI) Area Desenho e1.criarPonto( cx, cy); Editor p1 Ponto Linguagem Java 25 Chamadas de Método A troca de mensagens entre os objetos é realizada através da chamada de métodos com passagem de parâmetros Exemplo class Editor { void criarPonto (int x1, int y1) { Ponto p1 = new Ponto (); p1.x = x1; p1.y = y1; p1.desenhar(); } } Linguagem Java 26 Mensagem entre Objetos class Editor { void criarPonto (int x1, int y1) { Ponto p1 = new Ponto (); p1.x = x1; p1.y = y1; Troca de mensagem de p1.desenhar(); um objeto da classe } Editor com o objeto da classe Ponto } denominado aqui como p1 Linguagem Java 27 Mensagem entre Objetos ... float calcularBonus (Funcionario f) { float bonus = 0; Premissas: if ( f.ehChefe ( ) ) { Método da Classe Folha. bonus = f.salario * 0.5; Instância denominada a. } else bonus = f.salario * 0.2; return bonus; } ... true Objeto a Linguagem Java true Objeto f 28