Baixe o app para aproveitar ainda mais
Prévia do material em texto
UFRJ NCE - Núcleo de Computação Eletrônica Curso de programação Java Fevereiro / 2008 Professor: Henrique Tavares Programação Procedural Organização modular não respeita a similaridade das informações. Tem por objetivo identificar procedimentos que realizarão algum tipo de processamento que mistura dados com diferentes semânticas. Clientes Funcionários Vendas Itens das Vendas Parcelas da Vendas Condições de Pagamento Programação Procedural Programação OO Informações organizadas em classes São identificadas as entidades e seus relacionamentos para compor um sistema. A computação flui por meio de um mar de mensagens trocadas entre os objetos. Programação OO Itens da Venda Parcelas da Venda Condições de Pagamento Cliente Troca de Mensagens Funcionário Venda Classes Classes são utilizadas para caracterizar e descrever cenários: trata-se do uso de semântica! Na linguagem de programação Java, programas são construídos a partir de classes. A partir de uma definição de classe, você pode criar qualquer quantidade de objetos. Classes Na classe são definidos os membros do objeto: seus atributos (dados) e métodos (comportamentos) Pacotes (I) As classes são "arrumadas" dentro de pacotes. Pacotes (II) Pacotes são unidades de agrupamento de classes. Classes são agrupadas por vários motivos: Organização Performance da aplicação Solução de escopos de variáveis Os pacotes podem ter sub-pacotes de qualquer profundidade. Para evitar conflitos de nomes: O nome do pacote deve ser único para classes e interfaces no pacote. Escolher um nome que seja ao mesmo tempo significativo e único. Especialização É a criação de subclasses a partir de superclasses. As subclasses herdam de sua classe mãe: Estrutura Comportamento Relacionamentos Algumas destas características podem ser redefinidas, caracterizando uma especialização com relação à classe mãe. Características adicionais podem ser definidas. Generalização É a criação de superclasses a partir de suas subclasses. As características comuns entre as subclasses são colocadas na superclasse. Procedimento para criação de superclasse: Observar a estrutura e comportamento comuns entre as subclasses. Incorporar estas características à superclasse. As classes originais passam a ser subclasses da nova superclasse. Exemplos de Classes Um cenário de uma agência bancária pode ser caracterizado com as seguintes classes: PessoaFisica PessoaJuridica ContaCorrente ContaPoupanca TituloDeCapitalizacao FundoInvestimento DOC EscriturarioCaixa GerenteOperacional GerenteDeRelacionamento CaixaEletronico Deposito Saque etc. Similaridade dos Significados Quais classes podem ser reunidas de acordo com a proximidade dos seus significados? Conta ContaCorrente ContaPoupanca Cliente PessoaFisica PessoaJuridica Investimento TituloDeCapitalizacao FundoInvestimento OperacaoBancaria OperacaoOutroBanco DOC OperacaoMesmoBanco Deposito Saque Funcionario EscriturarioCaixa GerenteOperacional GereteDeRelacionamento Java usa herança para reutilizar classes existentes Herança estabelece uma relação de similaridade entre essas classes. Exemplo: ContaPoupanca é uma Conta PessoaFisica é um Cliente TituloDeCapitaliacao é um Investimento Em Java: Heranca: a hierarquia dos Significados class ContaPoupanca extends Conta { } java.lang.Object É a raiz da hierarquia de classes da API do Java: Toda classe estende Object, direta ou indiretamente Classes que não declaram estender ninguém, estendem Object diretamente. Classes que declaram estender outra classe, herdam de Object pela outra classe cuja hierarquia começa em Object. Todos os métodos de Object estão automaticamente disponíveis para qualquer objeto. Porém, as implementações são default, e geralmente inúteis para objetos específicos. Exercicio 1 Usando herança e aplicando generalização, crie o código Java que exibe a relação de similaridade entre as classes: EscriturarioCaixa, GerenteOperacional, GerenteDeRelacionamento, CaixaEletronico, Deposito, Saque, PessoaFisica, PessoaJuridica, ContaCorrente, ContaPoupanca, TituloDeCapitalizacao, FundoInvestimento e DOC. Objetos Um objeto é uma entidade que engloba dados e os métodos necessários à sua manipulação. Objetos são unidades autocontidas que executam tarefas personalizadas: trata-se de estruturas semanticamente autosuficientes. Objetos – construção Objetos sao criados à imagem da sua classe geradora. Objetos – destruição Após sua utilização, objetos podem ser destruídos. Objetos Pense em uma classe como uma fábrica com esquemas e instruções para construir artefatos: objetos são os artefatos que a fábrica produz. Para construirmos um objeto a partir da classe ContaCorrente: ContaCorrente minhaConta = new ContaCorrente(); Construtores de Objetos Construtores são procedimentos realizados na construção de objetos e devem possuir o mesmo nome da classe em questão. Podemos garantir que um objeto seja construído de varias formas diferentes, por exemplo: Conta minhaConta = new Conta(); OU AINDA… Conta minhaConta = new Conta(“Flavia”); OU AINDA… Conta minhaConta = new Conta(“Flavia”, 2000); Encapsulamento Algumas informações não devem ser construídas dentro de certos objetos pois entram em discordância com o significado da classe de objetos. Torna-se necessário isolar tais informações em outros objetos o que torna a programação mais coerente. Exemplo: Cliente umCliente = new Cliente(“Flavia”); LOGO DEPOIS… Conta minhaConta = new Conta( umCliente , 2000); Encapsulamento Sendo assim, encapsulamento é uma forma de isolamento de dados (atributos) e comportamento (métodos) dos objetos das classes. Classes Java encapsulam atributos e métodos da seguinte forma: class Conta { float saldo; void creditar( float valor ) { } void debitar( float valor ) { } void encerrar( ) { } } class Cliente { String nome; String endereco; char sexo; void enviarMalaDireta( ) { } void realizarCobranca( ) { } } Habilitando Construtores de Objetos Construtores de objetos devem ser disponibilizados na classe de onde serão criados os objetos: class Conta { float saldo; Cliente titular; void creditar( float valor ) { } void debitar( float valor ) { } void encerrar( ) { } Conta ( ) { } Conta ( Cliente cliente, double valor ) { } } Variáveis Variáveis são usadas em linguagens em geral para armazenar valores. Valores são passados para variáveis através de operações de atribuição Atribuição de valores Atribuição de referências (variáveis de objeto) numero = 44; letra = ‘C’; flag = false; frase = “Saldo insuficiente!” ; umCliente = new Cliente(); umaConta = new Conta(); Declaração de variáveis A declaração de uma variável é realizada quando citamos o seu tipo: int numero; char letra; boolean flag; String frase; Cliente umCliente; Conta umaConta; Declaração com Atribuição Frequentemente, ao declararmos uma variável podemos logo atribuir um valor que a inicializa. int numero = 44; char letra = ‘C’; boolean flag = false; String frase = “Saldo insuficiente!” ; Cliente umCliente = new Cliente(); Conta umaConta = new Conta(); Tipos primitivos Sao atômicos, por isso nao podem ser quebrados em pedaços menores. int numero = 44; char letra = ‘C’; boolean flag = false; Tipos primitivosTipos Complexos Tipos complexos são compostos por outros tipos: Date data = new Date(2008, 2, 18); int[] vetorInteiros = {1, 4, 7, 9}; OU AINDA… String frase = “Saldo insuficiente!” ; Cliente umCliente = new Cliente(“Flavia”); Conta minhaConta = new Conta( umCliente , 2000); Declarando Variáveis, Atributos e Parâmetros na classe Variaveis sao declaradas no corpo dos metodos Parametros sao declarados no cabecalho dos metodos Atributos sao declarados no corpo da classe class Conta { double saldo; Cliente titular; boolean ativa; void encerrar( ) { } void creditar( double valor ) { } void debitar( double valor ) { double debito = valor; saldo = saldo – debito; } Conta( ) { ativa = true; } Conta(Cliente cliente, double valor ) { ativa = true; saldo = valor; titular = cliente; } } Exercicio 2 Termine a programação da classe Conta completando os métodos void encerrar() e void creditar(double valor) Exercício 3 Pergunta: de que forma podemos consultar o nome do titular de uma conta quando construimos objetos assim: Cliente umCliente = new Cliente(“Flavia”); LOGO DEPOIS… Conta minhaConta = new Conta( umCliente , 2000); UFRJ NCE - Núcleo de Computação Eletrônica Programação Procedural Slide 3 Programação OO Slide 5 Classes Slide 7 Pacotes (I) Pacotes (II) Especialização Generalização Exemplos de Classes Similaridade dos Significados Heranca: a hierarquia dos Significados java.lang.Object Exercicio 1 Objetos Objetos – construção Objetos – destruição Slide 20 Construtores de Objetos Encapsulamento Slide 23 Habilitando Construtores de Objetos Variáveis Declaração de variáveis Declaração com Atribuição Tipos primitivos Slide 29 Tipos Complexos Declarando Variáveis, Atributos e Parâmetros na classe Exercicio 2 Exercício 3
Compartilhar