8
1 Uma Uma Introdução Introdução à Programação Programação Orientada Orientada a a Objetos Objetos e JAVA e JAVA usando usando NetBeans NetBeans Fernando Vieira Paulovich Fernando Vieira Paulovich [email protected] [email protected] Setembro Setembro, 2006 , 2006 Roteiro Roteiro l Introdução Introdução l Conceitos Conceitos de de Oientação Oientação a a Objetos Objetos l A A Linguagem Linguagem Java Java l NetBeans NetBeans (www.netbeans.org www.netbeans.org ) Introdução Introdução l Programação orientada a objetos tem se Programação orientada a objetos tem se mostrado promissora mostrado promissora l Linguagem Java Linguagem Java l Independência de plataforma ( Independência de plataforma ( Web Web) l Totalmente orientada a objetos Totalmente orientada a objetos l Baseada em C++ Baseada em C++ l Para novos aplicativos e não para a reescrita Para novos aplicativos e não para a reescrita do que já existe do que já existe Programação Programação Orientada Orientada a a Objetos Objetos Introdução Introdução l Softwares cada vez mais complexos e Softwares cada vez mais complexos e maiores maiores l Necessidade de tornar a tarefa de Necessidade de tornar a tarefa de programa programação mais produtiva ão mais produtiva l Programa Programaçã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 anteriores as abordagens anteriores Princípios da Orientação a Objetos Princípios da Orientação a Objetos l O paradigma orientado a objetos define alguns O paradigma orientado a objetos define alguns princípios básicos que devem ser seguidos princípios básicos que devem ser seguidos l Abstração Abstração l Encapsulamento Encapsulamento l Classe e Objeto Classe e Objeto l Herança Herança l Polimorfismo Polimorfismo l Modularidade Modularidade

Programação Orientada a Objetos - lcad.icmc.usp.brpaulovic/slides/semana_computacao_usp.pdf · Programação Orientada a Objetos e JAVA usando ... lIntrodução lConceitos de Oientação

Embed Size (px)

Citation preview

Page 1: Programação Orientada a Objetos - lcad.icmc.usp.brpaulovic/slides/semana_computacao_usp.pdf · Programação Orientada a Objetos e JAVA usando ... lIntrodução lConceitos de Oientação

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

Page 2: Programação Orientada a Objetos - lcad.icmc.usp.brpaulovic/slides/semana_computacao_usp.pdf · Programação Orientada a Objetos e JAVA usando ... lIntrodução lConceitos de Oientação

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

Page 3: Programação Orientada a Objetos - lcad.icmc.usp.brpaulovic/slides/semana_computacao_usp.pdf · Programação Orientada a Objetos e JAVA usando ... lIntrodução lConceitos de Oientação

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;

...}

Page 4: Programação Orientada a Objetos - lcad.icmc.usp.brpaulovic/slides/semana_computacao_usp.pdf · Programação Orientada a Objetos e JAVA usando ... lIntrodução lConceitos de Oientação

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

Page 5: Programação Orientada a Objetos - lcad.icmc.usp.brpaulovic/slides/semana_computacao_usp.pdf · Programação Orientada a Objetos e JAVA usando ... lIntrodução lConceitos de Oientação

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

Page 6: Programação Orientada a Objetos - lcad.icmc.usp.brpaulovic/slides/semana_computacao_usp.pdf · Programação Orientada a Objetos e JAVA usando ... lIntrodução lConceitos de Oientação

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

Page 7: Programação Orientada a Objetos - lcad.icmc.usp.brpaulovic/slides/semana_computacao_usp.pdf · Programação Orientada a Objetos e JAVA usando ... lIntrodução lConceitos de Oientação

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

Page 8: Programação Orientada a Objetos - lcad.icmc.usp.brpaulovic/slides/semana_computacao_usp.pdf · Programação Orientada a Objetos e JAVA usando ... lIntrodução lConceitos de Oientação

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