Programação Orientada a Objetos - lcad.icmc.usp.brpaulovic/slides/semana_computacao_usp.pdf ·...
Transcript of Programação Orientada a Objetos - lcad.icmc.usp.brpaulovic/slides/semana_computacao_usp.pdf ·...
1
UmaUma IntroduçãoIntrodução ààProgramaçãoProgramação OrientadaOrientada a a ObjetosObjetos e JAVA e JAVA usandousando
NetBeansNetBeans
Fernando Vieira PaulovichFernando Vieira [email protected]@icmc.usp.br
SetembroSetembro, 2006, 2006
RoteiroRoteiro
ll IntroduçãoIntroduçãoll ConceitosConceitos de de OientaçãoOientação a a ObjetosObjetosll A A LinguagemLinguagem JavaJavall NetBeansNetBeans ((www.netbeans.orgwww.netbeans.org))
IntroduçãoIntrodução
ll Programação orientada a objetos tem se Programação orientada a objetos tem se mostrado promissoramostrado promissora
ll Linguagem JavaLinguagem Javall Independência de plataforma (Independência de plataforma (WebWeb))ll Totalmente orientada a objetosTotalmente orientada a objetosll Baseada em C++Baseada em C++ll Para novos aplicativos e não para a reescrita Para novos aplicativos e não para a reescrita
do que já existedo que já existe
ProgramaçãoProgramação OrientadaOrientada a a ObjetosObjetos
IntroduçãoIntrodução
ll Softwares cada vez mais complexos e Softwares cada vez mais complexos e maioresmaiores
ll Necessidade de tornar a tarefa de Necessidade de tornar a tarefa de programaprogramaçção mais produtiva ão mais produtiva
ll ProgramaProgramaçção orientada a objetos (POO) ão orientada a objetos (POO) tem se mostrado mais competitiva do que tem se mostrado mais competitiva do que as abordagens anterioresas abordagens anteriores
Princípios da Orientação a ObjetosPrincípios da Orientação a Objetos
ll O paradigma orientado a objetos define alguns O paradigma orientado a objetos define alguns princípios básicos que devem ser seguidosprincípios básicos que devem ser seguidosll AbstraçãoAbstraçãoll EncapsulamentoEncapsulamentoll Classe e ObjetoClasse e Objetoll HerançaHerançall PolimorfismoPolimorfismoll ModularidadeModularidade
2
Identificando ClassesIdentificando Classes
ll Um Um objetoobjeto representa uma entidade que representa uma entidade que é tangível é tangível e/oue/ou visívelvisível
ll Para se identificar objetos analise os Para se identificar objetos analise os substantivossubstantivos
ll Objetos semelhante (características e Objetos semelhante (características e semântica) são agrupados em semântica) são agrupados em classesclasses
Membros da Classe: Métodos e Membros da Classe: Métodos e AtributosAtributos
ll O serviço oferecido por uma classe é O serviço oferecido por uma classe é definido via métodosdefinido via métodos
ll As propriedades de uma classes são As propriedades de uma classes são definidas via atributosdefinidas via atributos
ll O conteúdo dos atributos deve ser O conteúdo dos atributos deve ser manipulado por métodos da classemanipulado por métodos da classe
ExemploExemplo de de ModelagemModelagem UMLUML
FuncionarioNomeCPF
alugarFilme()devolverFilme()cadastrarCliente()
ModelandoModelando RelacionamentosRelacionamentos
ll PoucasPoucas classes classes trabalhamtrabalham sozinhassozinhasll CooperaçãoCooperação entreentre classes classes parapara realizarrealizar
algoalgoll ExistemExistem trêstrês tipostipos de de relacionamentosrelacionamentos: :
Dependências; GeneralizaDependências; Generalizaçções; e ões; e AssociaAssociaççõesões
Exemplo de RelacionamentosExemplo de Relacionamentos
FuncionarioFilme Cliente
Aluguel
Locadora Pessoa
CodificandoCodificando Classes Classes ememJavaJava
3
Codificando ClassesCodificando Classes
ll As classes Java devem ser As classes Java devem ser implementadas dentro de arquivos (texto) implementadas dentro de arquivos (texto) com extensão .com extensão .javajava
ll Cada arquivo deverá conter somente uma Cada arquivo deverá conter somente uma classe com públicaclasse com pública
ll O nome do arquivo deve ser o mesmo da O nome do arquivo deve ser o mesmo da única classe pública presenteúnica classe pública presente
Codificando a ClasseCodificando a Classe
Codificando a ClasseCodificando a Classe
public class Funcionario {...}
Funcionario.java
Codificando os AtributosCodificando os Atributos
Codificando os AtributosCodificando os Atributos
public class Funcionario {private String nome;private int rg;private String telefone;
...}
InicializaçãoInicialização dos Atributosdos Atributos
ll É possível no momento da declaração de É possível no momento da declaração de um atributo, iniciáum atributo, iniciá--lo com um valor;lo com um valor;
public class Funcionario {private String nome;private int rg = 12345;private String telefone;
...}
4
Codificando MétodosCodificando Métodos Codificando MétodosCodificando Métodos
public class Funcionario {private String nome;private int rg;private String telefone;
public void cadastrarCliente(Cliente cliente) {}
...}
Codificando Métodos Codificando Métodos AcessadoresAcessadorese Modificadorese Modificadores
Codificando Métodos Codificando Métodos AcessadoresAcessadorese Modificadorese Modificadores
public class Funcionario {private String nome;...
public String getNome() {return nome;
}
public void setNome(String nome) {this.nome = nome;
}...}
Dicas para Codificação de ClassesDicas para Codificação de Classes
ll SEMPRE mantenha os atributos privados;SEMPRE mantenha os atributos privados;ll SEMPRE SEMPRE inicializeinicialize os dados;os dados;ll Não use tipos básicos em demasia em Não use tipos básicos em demasia em
uma classe;uma classe;ll Use uma forma padrão de definição de Use uma forma padrão de definição de
classes, levando em consideração a classes, levando em consideração a visibilidade de seus membros.visibilidade de seus membros.
Uso de Classes ExistentesUso de Classes Existentes
ll Na maior parte das classes em Java, criamNa maior parte das classes em Java, criam--se se objetos, especificaobjetos, especifica--se o estado inicial de cada se o estado inicial de cada um e depois se trabalha com os objetos;um e depois se trabalha com os objetos;
Classe obj; //criaClasse obj; //cria--se a variávelse a variávelobj = obj = newnew Classe(); Classe(); //cria//cria--se se o objetoo objetoobj.obj.metodometodo(); (); //usa//usa--se o se o objetoobjeto
5
Programa PrincipalPrograma Principal
public class Principal {public static void main(String[] args) {
System.out.println(“Teste.”);}
}
ConstrutoresConstrutores
ll Quando um objeto é criado seu construtor é Quando um objeto é criado seu construtor é chamadochamado
ll Um construtorUm construtorll Tem o mesmo nome da classeTem o mesmo nome da classell Pode ter um ou mais parâmetrosPode ter um ou mais parâmetrosll Não retorna valorNão retorna valorll Não pode ser explicitamente chamados como Não pode ser explicitamente chamados como
um método da classeum método da classe
CodificandoCodificandoRelacionamentosRelacionamentos
CodificandoCodificando RelacionamentosRelacionamentos
ll NormalmenteNormalmente as as dependênciasdependências nascemnascemdo do códigocódigo e e nãonão o o contráriocontrário
ll NãoNão existeexiste um um comandocomando parapara codificarcodificarassociaçõesassociações
ll CodificaçãoCodificação de de herançaherança é é muitomuito simplessimples
HerançaHerança
Empregado
Gerente
HerançaHerança
publicpublic classclass Empregado {Empregado {}}
publicpublic classclass Gerente Gerente extendsextends Empregado {Empregado {}}
Empregado
Gerente
6
ProgramaçãoProgramação GráficaGráfica
IntroduçãoIntrodução
ll Java oferece dois pacotes básicos Java oferece dois pacotes básicos para a programação de interface para a programação de interface gráfica: gráfica: AWTAWT e e SwingSwing
ll Em um nível mais alto, uma janela Em um nível mais alto, uma janela em Java é denominada em Java é denominada QuadroQuadro((FrameFrame))
ll Em AWT, a classe para implementar Em AWT, a classe para implementar um quadro chama um quadro chama FrameFrame e em Swing e em Swing chama chama JFrameJFrame
Criando um QuadroCriando um Quadro
ll Para se criar um quadro usando o Para se criar um quadro usando o SwingSwing, , a classe a classe JFrameJFrame deve ser derivada em deve ser derivada em uma nova classeuma nova classe
publicpublic classclass FirstFrameFirstFrame extendsextends JFrameJFrame {{
}}
Criando um QuadroCriando um Quadro
importimport javaxjavax.swing.*;.swing.*;
publicpublic classclass FirstFrameFirstFrame extendsextends JFrameJFrame {{publicpublic FirstFrameFirstFrame() {() {
setTitlesetTitle("("FirstFrameFirstFrame"); "); //dá um nome para o quadro//dá um nome para o quadrosetSizesetSize(300,200); (300,200); //informa o tamamho//informa o tamamho do quadrodo quadrosetLocationsetLocation(300,300); (300,300); //posiciona o q//posiciona o quadro na telauadro na tela
}}
publicpublic staticstatic voidvoid mainmain(String[] (String[] argsargs) {) {JFrameJFrame frame = frame = newnew FirstFrameFirstFrame();();frame.frame.setVisiblesetVisible((truetrue););
}}}}
ResultadoResultado Camada de uma JanelaCamada de uma Janela
7
Hierarquia GráficaHierarquia Gráfica
Object
Component
Container
JComponent
JPanel
Window
Frame
JFrame
Manipulação de EventosManipulação de Eventos
ll A monitoração do que está ocorrendo em uma A monitoração do que está ocorrendo em uma interface gráfica é feita através de eventosinterface gráfica é feita através de eventos
ll Na manipulação de eventos, temos dois Na manipulação de eventos, temos dois extremos: o extremos: o originadororiginador (interface gráfica) e o (interface gráfica) e o ouvinteouvinte (quem trata) dos eventos(quem trata) dos eventos
ll Qualquer classe podem ser um ouvinte de um Qualquer classe podem ser um ouvinte de um evento, para isso é necessário registrar essa evento, para isso é necessário registrar essa classe como um ouvinte de uma classe classe como um ouvinte de uma classe originadoraoriginadora
Diagrama EsquemáticoDiagrama Esquemático
OuvinteOriginador
InterfaceOuvinteRegistra Ouvintes
EventObject
Reage aoEvento
A Hierarquia de Eventos AWTA Hierarquia de Eventos AWT
ll Existem diferentes tipos de eventos destinados Existem diferentes tipos de eventos destinados a ouvintesa ouvintesll ActionEventActionEventll AdjustmentEventAdjustmentEventll FocusEventFocusEventll KeyEventKeyEventll MouseEventMouseEventll WindowEventWindowEventll ......
A Hierarquia de Eventos AWTA Hierarquia de Eventos AWT
ll Existem diferentes interfaces ouvintes para Existem diferentes interfaces ouvintes para esses eventosesses eventosll ActionListenerActionListenerll AdjustmentListenerAdjustmentListenerll FocusListenerFocusListenerll KeyListenerKeyListenerll MouseListenerMouseListenerll MouseMotionListenerMouseMotionListenerll WindowListenerWindowListenerll ......
Componentes Swing da Componentes Swing da InterfaceInterface
8
O Padrão de Projeto ModeloO Padrão de Projeto Modelo--VisãoVisão--Controlador (MVC)Controlador (MVC)
ll O Swing segue a essência do padrão de O Swing segue a essência do padrão de projeto MVCprojeto MVCll Modelo Modelo –– armazena um conteúdoarmazena um conteúdoll Visão Visão –– exibe o conteúdoexibe o conteúdoll Controlador Controlador –– processa a entrada de dados processa a entrada de dados
do usuáriodo usuário
O Padrão de Projeto ModeloO Padrão de Projeto Modelo--VisãoVisão--Controlador (MVC)Controlador (MVC)
Modelo
Visão
Controle
BibliografiaBibliografia
ll HorstmannHorstmann, C. S., , C. S., CornellCornell, G. , G. Core Java 2 Core Java 2 : volume I : volume I –– FundamentosFundamentos. . MakronMakronBooksBooks, 2004, 2004
ll HorstmannHorstmann, C. S., , C. S., CornellCornell, G. , G. Core Java 2 Core Java 2 : volume II : volume II –– Recursos AvançadosRecursos Avançados. . MakronMakron BooksBooks, 2004., 2004.
ll MetskerMetsker, S. J. , S. J. Padrões de Projeto em Padrões de Projeto em JavaJavaTMTM. . BookmanBookman, 2004, 2004