Uma Introdução à Programação Orientada a Objetos e JAVA usando NetBeans Roteiro Introdução Conceitos de Oientação a Objetos A Linguagem Java NetBeans (www.netbeans.org) Fernando Vieira Paulovich paulovic@icmc.usp.br Setembro,, 2006 Introdução Programação orientada a objetos tem se mostrado promissora Linguagem Java Independência de plataforma (Web( Web) Totalmente orientada a objetos Baseada em C++ Para novos aplicativos e não para a reescrita do que já existe Programação Orientada a Objetos Introdução Softwares cada vez mais complexos e maiores Necessidade de tornar a tarefa de programação mais produtiva Programação orientada a objetos (POO) tem se mostrado mais competitiva do que as abordagens anteriores Princípios da Orientação a Objetos O paradigma orientado a objetos define alguns princípios básicos que devem ser seguidos Abstração Encapsulamento Classe e Objeto Herança Polimorfismo Modularidade 1
Identificando Classes Um objeto representa uma entidade que é tangível e/ou visível Para se identificar objetos analise os substantivos Objetos semelhante (características e semântica) são agrupados em classes Membros da Classe: Métodos e Atributos O serviço oferecido por uma classe é definido via métodos As propriedades de uma classes são definidas via atributos O conteúdo dos atributos deve ser manipulado por métodos da classe Exemplo de Modelagem UML Funcionario Nome CPF alugarfilme() devolverfilme() cadastrarcliente() Modelando Relacionamentos Poucas classes trabalham sozinhas Cooperação entre classes para realizar algo Existem três tipos de relacionamentos: Dependências; Generalizações; e Associações Exemplo de Relacionamentos Locadora Pessoa Codificando Classes em Java Filme Cliente Funcionario Aluguel 2
Codificando Classes Codificando a Classe As classes Java devem ser implementadas dentro de arquivos (texto) com extensão.java. Cada arquivo deverá conter somente uma classe com pública O nome do arquivo deve ser o mesmo da única classe pública presente Codificando a Classe Codificando os Atributos Funcionario.java Codificando os Atributos private String nome; private int rg; private String telefone; Inicialização dos Atributos É possível no momento da declaração de um atributo, iniciá-lo com um valor; private String nome; private int rg = 12345; private String telefone; 3
Codificando Métodos Codificando Métodos private String nome; private int rg; private String telefone; public void cadastrarcliente(cliente cliente) { Codificando Métodos Acessadores e Modificadores Codificando Métodos Acessadores e Modificadores private String nome; public String getnome() { return nome; public void setnome(string nome) { this.nome = nome; Dicas para Codificação de Classes SEMPRE mantenha os atributos privados; SEMPRE inicialize os dados; Não use tipos básicos em demasia em uma classe; Use uma forma padrão de definição de classes, levando em consideração a visibilidade de seus membros. Uso de Classes Existentes Na maior parte das classes em Java, criam-se objetos, especifica-se se o estado inicial de cada um e depois se trabalha com os objetos; Classe obj; //cria-se a variável obj = new Classe(); //cria-se o objeto obj.metodo metodo(); //usa-se se o objeto 4
Programa Principal public class Principal { public static void main(string[] args) { System.out.println( Teste. ); Construtores Quando um objeto é criado seu construtor é chamado Um construtor Tem o mesmo nome da classe Pode ter um ou mais parâmetros Não retorna valor Não pode ser explicitamente chamados como um método da classe Codificando Relacionamentos Codificando Relacionamentos Normalmente as dependências nascem do código e não o contrário Não existe um comando para codificar associações Codificação de herança é muito simples Herança Herança Empregado Gerente Empregado Gerente public class Empregado { public class Gerente extends Empregado { 5
Introdução Programação Gráfica Java oferece dois pacotes básicos para a programação de interface gráfica: AWT e Swing Em um nível mais alto, uma janela em Java é denominada Quadro (Frame) Em AWT, a classe para implementar um quadro chama Frame e em Swing chama JFrame Criando um Quadro Para se criar um quadro usando o Swing, a classe JFrame deve ser derivada em uma nova classe public class FirstFrame extends JFrame { import javax.swing.*; Criando um Quadro public class FirstFrame extends JFrame { public FirstFrame() { settitle(" ("FirstFrame"); //dá um nome para o quadro setsize(300,200); //informa o tamamho do quadro setlocation(300,300); //posiciona o quadro q na tela public static void main(string[] args) ) { JFrame frame = new FirstFrame(); frame.setvisible setvisible(true); Resultado Camada de uma Janela 6
Hierarquia Gráfica Manipulação de Eventos Object JPanel Component JComponent Container Window Frame A monitoração do que está ocorrendo em uma interface gráfica é feita através de eventos Na manipulação de eventos, temos dois extremos: o originador (interface gráfica) e o ouvinte (quem trata) dos eventos Qualquer classe podem ser um ouvinte de um evento, para isso é necessário registrar essa classe como um ouvinte de uma classe originadora JFrame Diagrama Esquemático A Hierarquia de Eventos AWT Registra Ouvintes Originador EventObject InterfaceOuvinte Reage ao Evento Ouvinte Existem diferentes tipos de eventos destinados a ouvintes ActionEvent AdjustmentEvent FocusEvent KeyEvent MouseEvent WindowEvent A Hierarquia de Eventos AWT Existem diferentes interfaces ouvintes para esses eventos ActionListener AdjustmentListener FocusListener KeyListener MouseListener MouseMotionListener WindowListener Componentes Swing da Interface 7
O Padrão de Projeto Modelo- Visão-Controlador (MVC) O Swing segue a essência do padrão de projeto MVC Modelo armazena um conteúdo Visão exibe o conteúdo Controlador processa a entrada de dados do usuário O Padrão de Projeto Modelo- Visão-Controlador (MVC) Modelo Visão Controle Bibliografia Horstmann,, C. S., Cornell,, G. Core Java 2 : volume I Fundamentos. Makron Books,, 2004 Horstmann,, C. S., Cornell,, G. Core Java 2 : volume II Recursos Avançados. Makron Books,, 2004. Metsker,, S. J. Padrões de Projeto em Java TM. Bookman,, 2004 8