Programação com Acesso a BD. Programação com OO Acesso em Java



Documentos relacionados
Programação Orientada a Objetos C ++ 4 Conceitos de OO em Java Classes e Objetos

Unidade IV: Ponteiros, Referências e Arrays

Orientação a Objetos com Java

Encapsulamento de Dados

Lista de Contas: Assinatura. Lista de Contas. Listas de Contas: Descrição. Listas de Contas: Descrição. Listas de Contas: Descrição

Influenciam nossa percepção; ajudam-nos a organizar e a coordenar a Classes estimulam projeto centrado em dados:

Programação Orientada a Objetos em Java

EXERCÍCIOS SOBRE ORIENTAÇÃO A OBJETOS

Programação por Objectos. Java

Curso de Java. Orientação a objetos e a Linguagem JAVA. TodososdireitosreservadosKlais

Introdução a Java. Hélder Nunes

POO Programação Orientada a Objetos. Classes em Java

Técnicas de Programação II

Reuso com Herança a e Composiçã

3 Classes e instanciação de objectos (em Java)

Módulo 07 Características Avançadas de Classes

Curso de PHP. FATEC - Jundiaí. A programação orientada a objetos (object-oriented oriented programming

Noções sobre Objetos e Classes

Java TM e o Modelo de Objetos

Desenvolvimento OO com Java Orientação a objetos básica

Técnicas de Programação Avançada TCC Profs.: Anselmo Montenegro Conteúdo: Introdução à Orientação a Objetos

Relacionamentos entre objetos. Relacionamentos entre objetos. Relacionamentos entre objetos. Relacionamentos entre objetos

Prof. Jhonatan Fernando

2 Orientação a objetos na prática

Profº. Enrique Pimentel Leite de Oliveira

Java 2 Standard Edition Como criar classes e objetos

Aula 2. Objetivos. Encapsulamento na linguagem Java; Utilizando a referência this.

Orientação a Objetos e Java

Programação Orientada a Objetos em Java. Herança

Programação Orientada a Objetos. Encapsulamento

Métodos de Construção de Software: Orientação a Objetos. Mestrado em Ciência da Computação 2008 Profa. Itana Gimenes

Módulo 02 Programação Orientada a Objetos. Última atualização: 07/06/2010

Análise e Projeto Orientados por Objetos

Orientação a Objetos

Programação Orientada a Objetos Prof. Rone Ilídio UFSJ/CAP

Guia de Fatores de Qualidade de OO e Java

Projeto de Software Orientado a Objeto

Programação de Computadores - I. Profª Beatriz Profº Israel

Introdução à Programação. Interface, Polimorfismo e Dynamic Binding

JSP - ORIENTADO A OBJETOS

BSI UFRPE Prof. Gustavo Callou

8 Classes Internas. Desenvolvimento OO com Java. Vítor E. Silva Souza

Herança. Alberto Costa Neto DComp - UFS

Roteiro do Programa e Entrada/Saída

Curso Adonai QUESTÕES Disciplina Linguagem JAVA

Construção de novas Classes em Java. Classes Atributos Métodos Herança...

Prova de Java. 1) Copie o programa abaixo no eclipse e complete-o, utilizando os conceitos aprendidos durante o curso. (4 pontos)

Java. Marcio de Carvalho Victorino

Um objeto é uma instância de uma 'classe'. Você define uma classe utilizando o trecho de código abaixo;

PROGRAMAÇÃO AVANÇADA -CONCEITOS DE ORIENTAÇÃO A OBJETOS. Prof. Angelo Augusto Frozza, M.Sc. frozza@ifc-camboriu.edu.br

Algoritmos e Programação II. Sobrecarga

Módulo 06 Desenho de Classes

Material de Apoio 5. int getres() { return res; O que estas classes possuem em comum? 1) 2) 3)

Bibliografia. Desenvolvimento Orientado a Objetos. Introdução. Bibliografia. O que você vê?

UML Aspectos de projetos em Diagramas de classes

Introdução à orientação a objetos. João Tito Almeida Vianna 25/05/2013

FBV - Linguagem de Programação II. Um pouco sobre Java

Revisão OO Básico. Orientação a Objetos em Java

Membros de classe e de instância. PARTE III: Java e OO - detalhes. Exemplo 1: método. Exercício. Exemplo 1 corrigido

Capítulo 3. Programação por objectos em Java

Tópicos em Engenharia de Computação

Aula 1 Tipo Abstrato de Dados

DEFINIÇÃO DE MÉTODOS

3. PARADIGMA ORIENTADO A OBJETOS

Análise de Programação

Programação Orientada a Objetos e Java - Introdução. Carlos Lopes

Computação II Orientação a Objetos

INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE ALAGOAS CURSO TECNICO EM INFORMATICA DISCIPLINA:

Programação Orientada a Objetos (DPADF 0063)

NetBeans. Conhecendo um pouco da IDE

Paradigmas da Programação PPROG. Linguagem JAVA. Interfaces. (Livro Big Java, Late Objects Capítulo 9) Nelson Freire (ISEP DEI-PPROG 2013/14) 1/33

Programação de Computadores - I. Profª Beatriz Profº Israel

Programação Estruturada e Orientada a Objetos. Fundamentos Orientação a Objetos

UNIVERSIDADE FEDERAL DO PARANÁ UFPR Bacharelado em Ciência da Computação

Programas eram lineares e com poucos módulos (Programação estruturada) Aumento da complexidade dos sistemas e difícil reusabilidade dos mesmos

Exercícios de Revisão Java Básico

7 RTTI e Interfaces. Desenvolvimento OO com Java. Vítor E. Silva Souza (vitorsouza@inf.ufes.br)

Implementando uma Classe e Criando Objetos a partir dela

Capítulo 13. Encapsulamento. Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

PHP INTRODUÇÃO CLASSES E OBJETOS

Especialização em desenvolvimento para web com interfaces ricas. Tratamento de exceções em Java Prof. Fabrízzio A. A. M. N. Soares

Padrão Arquitetura em Camadas

Programação por Objectos. Java

Diagrama de Classes. Um diagrama de classes descreve a visão estática do sistema em termos de classes e relacionamentos entre as classes.

A Linguagem Java. Alberto Costa Neto DComp - UFS

Exercício 1 : As classes abaixo serão utilizadas neste exercício: public class Ponto { int x; int y; public Ponto(int x, int y){ this.

UNIVERSIDADE FEDERAL DO PARANÁ

Programação por Objectos. Java

Programação Orientada a Objetos em java. Polimorfismo

Orientação à Objetos. Aécio Costa

Linguagem de Programação JAVA. Técnico em Informática Professora Michelle Nery

Padrão Básico de Projeto: Interfaces e Polimorfismo

public Agenda() { compromissos = null; } public int getnumerodecompromissos() { if (compromissos==null) return 0; else return compromissos.

Pontifícia Universidade Católica de São Paulo Departamento de Ciência da Computação

Capítulo 8. Introdução UML

Orientação a Objeto e UML Questões 2014 Prof. Felipe Leite

AULA 4 VISÃO BÁSICA DE CLASSES EM PHP

Linguagem de Programação III

Transcrição:

Programação com OO Acesso em Java a BD Curso: Técnico em Informática Campus: Ipanguaçu José Maria Monteiro Pontifícia Universidade Católica do Rio de Janeiro PUC-Rio Departamento Clayton Maciel de Informática Costa clayton.maciel@ifrn.edu.br monteiro@inf.puc-rio.brrio.br Programação com Acesso a BD Aqueles que não conseguem captar novas idéias ficam com medo delas ou as ignoram. David F. Hinnant 1

Programação com Acesso a BD Unidade III: Objetos, Classes e Encapsulamento O paradigma de orientação a objetos consiste basicamente em organizar o software como uma coleção de objetos que incorporam a estrutura de dados e o comportamento; Orientação a objetos contrasta com a programação convencional, na qual a estrutura de dados e o comportamento são fracamente conectados; Foco nos dados (objetos) do sistema, não nas funções; O comportamento muda mais que a estrutura de dados; 2

Objetos Um objeto é qualquer coisa, real ou abstrata, na qual nós armazenamos dados e as operações que manipulam os dados [ Martin ]; Um objeto ou uma instância é uma abstração de alguma coisa no domínio do problema, refletindo as capacidades do sistema de manter informações sobre ele, interagir com ele, ou ambos, um encapsulamento de valores de atributos e seus serviços exclusivos [ Yourdon ]; Objetos 3

Objetos Um objeto é um ente independente, composto por: Estado Interno: uma memória interna em que valores podem ser armazenados e modificados ao longo da vida do objeto (conjunto de atributos ou variáveis de instância). Comportamento: conjunto de ações prédefinidas (denominadas métodos) através das quais o objeto responderá a demanda de processamento por parte de outros objetos; Objetos numero saldo credito(int v) debito(int v) getsaldo() OBJETO CONTA 4

Objetos Passagem de Mensagem M3(); M3 M2 Obj 1 M1 M4 M2 M3 Obj 2 M1 M4 M2 Obj 3 M3 M4; M1 M4 credito(20) credito Crédito credito saldo numero Saldo Número 875,32 21.342-7 875,32 21.342-7 saldo 895,32 numero 21.342-7 debito Débito debito ESTADOS DO OBJETO CONTA 5

Objetos Um objeto possui: Identidade: É uma propriedade imutável e permanente que distingue um objeto de outros, independentemente de seu estado interno, e que não é perdida pelo objeto ao longo de toda a sua vida; M3 M2 Obj 1 M1 M4 Classes Classe é o agrupamento de objetos com a mesma estrutura de dados (atributos) e comportamento (operações) [ Rumbaugh ]; Classe é uma coleção de um ou mais objetos com um conjunto uniforme de atributos e serviços, incluindo uma descrição de como criar novos objetos na classe [ Yourdon ]; Descreve um conjunto infinito de objetos; Cada objeto é dito ser uma instância de uma classe; 6

Classes Classes 7

Representação de uma classe Conta saldo : double numero: int data : date credito(double) : debito(double) : Classes X Objetos Cada instância da classe tem seus próprios valores para cada atributo, mas compartilham as operações com outras instâncias da classe; Em programação orientada a objetos, os termos principais têm a seguinte correspondência aproximada com termos tradicionais de programação: classe -> tipo objeto -> variável de um tipo método -> procedimento ou função mensagem -> chamada de procedimento 8

Relacionamentos Entre Classes; Entre Classe e Objeto; Entre Objetos; Relacionamentos Entre Classes; GENERALIZAÇÃO / ESPECIALIZAÇÃO (É-UM-TIPO-DE)... METACLASSE... 9

Generalização X Especialização Impressora Matricial Laser Jato de Tinta Metaclasse 10

Relacionamentos Entre Classe e Objeto; UM OBJETO É INSTÂNCIA DE UMA CLASSE Relacionamentos Entre Objetos; UTILIZAÇÃO... Apartamento AGREGAÇÃO OU COMPOSIÇÃO Sala Cozinha Banheiro Quarto ASSOCIAÇÃO... 11

Utilização M3 M2 Obj 1 M1 M4 M3(); M2 M1 Obj 2 M3 M4 Composição Apartamento Sala Cozinha Banheiro Quarto 12

Associação Pessoa Empregado Empregador Trabalha para Empresa Sintaxe de uma classe [public] class <nome da classe> [ extends <classe pai> ] [ implements <interface1>,..., <interfacen> ] { [ public/protected/private] [ final ] [ static ] <DADOS> [ public/protected/private] [ final ] [ static ] [abstract ] <MÉTODOS> 13

Classe de Contas em Java Nome da classe. class Conta { String numero; Atributos. double saldo; void credito (double valor) {saldo = saldo + valor; void debito (double valor) {saldo = saldo - valor; Métodos. Criando Instâncias DECLARAÇÃO: < ID-CLASSE > < LISTA-ID >; CRIAÇÃO: < ID > = new < ID-CLASSE > ( < ARGS > ); DECLARAÇÃO E CRIAÇÃO JUNTAS: < ID-CLASSE > < ID > = new < ID-CLASSE > ( < ARGS > ); 14

Programa que cria e manipula uma conta class CriaConta { /** Criando um objeto do tipo Conta */ public static void main (String [] args) { Conta conta1 = new Conta (); conta1.numero = 21.342-7 ; conta1.saldo = 0; Criação de um objeto da classe conta. Acessando os atributos do objeto conta1. conta1.credito (500.87); conta1.debito (45.00); System.out.println(conta1.saldo); Utilizando os métodos do objeto conta1. Acessando os dados de um objeto... conta1.numero = 21.342-7 ;... Identificador. Nome do atributo. Ponto. 15

Utilizando métodos de um objeto... conta1.credito (500.87);... Identificador. Nome do método. Ponto. Classe Circle Nome da classe. class Circle { Atributos. double x, y, r; double circunferencia () {return 2 * 3.14159 * r; double area () {return 3.14159 * r * r; Métodos. 16

Acessando os dados de um objeto Circle c = new Circle( ); c.x = 2.0; c.y = 2.0; c.r = 1.0; Utilizando métodos de um objeto Circle c = new Circle( ); double a; c.r = 2.5; a = c.area( ); Definindo Construtores Construtores são métodos especiais chamados pelo sistema no momento da criação de um objeto; Servem para inicializar objetos de forma organizada; Devem ter o mesmo nome da respectiva classe; Não possuem valor de retorno; Pode haver mais de um construtor por classe (overloading ou sobrecarga de métodos); 17

Exemplo de Construtores class Conta { String numero; double saldo; void credito (double valor) {saldo = saldo + valor; void debito (double valor) {saldo = saldo - valor; Conta (String n) {numero = n; saldo = 0; Método Construtor. Criando Objetos com Construtores... Conta conta1; conta1 = new Conta( 21.342-7 ); conta1.credito(500.87); conta1.debito(45.00); System.out.println(conta1.saldo);... 18

Criando Objetos com Construtores... Conta conta1; conta1 = new Conta(); conta1.credito(500.87); conta1.debito(45.00); System.out.println(conta1.saldo);... O construtor default foi perdido. Sobrecarga de Métodos Em java, os métodos são diferenciados pelo nome, e pelo número, tipo e posição dos argumentos; Isto vale para qualquer método e não apenas para os construtores; 19

Sobrecarga de Métodos class Conta { Construtor default. String numero; double saldo; void credito (double valor) {saldo = saldo + valor; void debito (double valor) {saldo = saldo - valor; Conta () {saldo = 0; Conta (String n) {numero = n; saldo = 0; Conta (String n, double v) {numero = n; saldo = v; Sobrecarga de Construtores. Sobrecarga de Métodos class CriaConta { public static void main (String[] args) { Conta conta1 = new Conta ( 123-4 ); Conta conta2 = new Conta ( 21.342-7, 300); Conta conta3 = new Conta (); System.out.println(conta1.saldo); System.out.println(conta2.saldo); 20

Sobrecarga de Métodos class CriaConta { public static void main (String [] args) { Conta conta1 = new Conta ( 678-9 ); Conta conta2 = new Conta (300, 21.342-7 ); Conta conta3 = new Conta (900); System.out.println(conta1.saldo); System.out.println(conta2.saldo); Sobrecarga de Métodos class Conta { String numero; double saldo; void credito (double valor) {saldo = saldo + valor; void debito (double valor) {saldo = saldo - valor; void debito () {saldo = saldo - (int)saldo; Conta (String n) {numero = n; saldo = 0; 21

Sobrecarga de Métodos class CriaConta { public static void main (String[] args) { Conta conta1 = new Conta ( 678-9 ); conta1.credito(500.86); conta1.debito(100); System.out.println(conta1.saldo); conta1.debito(); System.out.println(conta1.saldo); Sobrecarga de Métodos class Conta { String numero; double saldo; void credito (double valor) {saldo = saldo + valor; void debito (double valor) {saldo = saldo - valor; void debito (double v) { if (saldo >= v) saldo = saldo - v; Conta (String n) {numero = n; saldo = 0; 22

Sobrecarga de Métodos class Conta { String numero; double saldo; void credito (double valor) {saldo = saldo + valor; void debito (double valor) {saldo = saldo - valor; boolean debito (double v) { if (saldo < v) return false; else {saldo = saldo - v; return true Conta (String n) {numero = n; saldo = 0; Sobrecarga de Métodos class Conta { String numero; double saldo; void credito (double valor) {saldo = saldo + valor; void debito (double valor) {saldo = saldo - valor; boolean debito () { if (saldo < 0) return false; else {saldo = saldo - (int)saldo; return true Conta (String n) {numero = n; saldo = 0; 23

Encapsulamento Encapsulamento Consiste em separar os aspectos externos de um objeto, que são acessíveis para outros objetos, dos detalhes internos de implementação do objeto [ Rumbaugh ]; Qualquer mecanismo que nos permita esconder a implementação do objeto fazendo com que outros componentes do sistema não tenham conhecimento do conteúdo interno dos dados armazenados no objeto [ Yourdon ]; 24

Encapsulamento É o resultado (ou ato) de se esconder os detalhes de implementação de um objeto do usuário [ Martin ]; Information hiding; A comunicação entre objetos é feita através de mensagens enviadas para as operações; A implementação de um objeto pode ser mudada sem afetar as aplicações que o usam; Facilidade de manutenção; Encapsulamento Métodos públicos Métodos privados Atributos públicos Atributos privados 25

Controle de Acesso Normalmente, é conveniente proibir o acesso a certos atributos (ou mesmo métodos); Controle de Acesso Public: permite acesso a partir de qualquer classe; Private: permite acesso apenas na própria classe; Protected: permite acesso apenas a objetos da mesma classe e de suas sub-classes; Default: permite acesso a todas as classes do mesmo pacote; 26

Classe conta com atributos privados class Conta { Atributos privados. private String numero; private double saldo; void credito (double valor) {saldo = saldo + valor; void debito (double valor) {saldo = saldo - valor; Conta (String n) {numero = n; saldo = 0; Consequências de tornar um atributo privado class CriaConta { public static void main (String[] args) { Conta conta1 = new Conta ( 123-4 ); conta1.saldo = 1000; conta1.numero = 27.548-7 ; System.out.println(conta1.saldo); Atributos privados não podem ser diretamente acessados fora de sua classe. 27

Consequências de tornar um atributo privado Tentar acessar um componente privado (de fora da classe) resulta em erro de compilação; Mas como torná-lo acessível apenas para consulta (leitura)? Isto é possível definindo-se um método que retorna o atributo (na própria classe onde o atributo se encontra); Classe conta com atributos privados class Conta { private String numero; private double saldo; void credito (double valor) {saldo = saldo + valor; void debito (double valor) {saldo = saldo - valor; String getnumero() {return numero; double getsaldo() {return saldo; Conta (String n) {numero = n; saldo = 0; 28

Recuperando o valor de um atributo privado class CriaConta { public static void main (String[] args) { Conta conta1 = new Conta ( 123-4 ); conta1.credito(1000); System.out.println(conta1.getSaldo()); O método getsaldo() retorna o valor do atributo privado saldo. Métodos Destrutores A presença de coleta automática de lixo torna o conceito de destrutores um pouco diferente de seus equivalentes em outras linguagens OO; Em Java destrutores são métodos chamados pelo sistema quando a memória de um objeto está para ser liberada pelo coletor automático de lixo (não quando está para ser coletada); Você pode chamar o destrutor, mas isso não implica que o objeto será deletado; 29

Exemplos de Destrutores protected void finalize{ this.my_database.close( ); Os destrutores são úteis para limpar a casa quando um objeto deixa de ser usado; Atributos x Variáveis Estáticas Cada instância de uma classe tem seus próprios atributos; As variáveis estáticas (ou de classe) são compartilhadas por todas as instâncias da classe; As variáveis de classe são usadas como variáveis globais; 30

prox_num = 132 Classe conta com variável estática Exemplo de Variável Estática class ContaComGerador { private String numero; private double saldo; private static int proxnum = 1; void credito... ContaComGerador () { numero = String.valueOf(proxNum); saldo = 0; proxnum = proxnum + 1; 31

Exemplo de Variável Estática class CriaContaComGerador { public static void main (String[] args) { ContaComGerador conta1 = new ContaComGerador(); ContaComGerador conta2 = new ContaComGerador(); System.out.println(conta1.getNumero()); System.out.println(conta2.getNumero()); conta1.credito(400); System.out.println(conta1.getSaldo()); Exemplo de Variável Estática class CriaContaComGerador { public static void main (String[] args) { ContaComGerador conta1 = new ContaComGerador(); ContaComGerador conta2 = new ContaComGerador(); System.out.println(conta1.getNumero()); System.out.println(conta2.getNumero()); System.out.println( Número da próxima conta: + ContaComGerador.proxNum); A variável deve ser visível (no caso public). 32

Acessando Variáveis Estáticas Fora da classe ContaComGerador. System.out.println( Número da próxima conta: + ContaComGerador.proxNum); System.out.println( Número da próxima conta: + conta1.proxnum); ContaComGerador () { numero = proxnum; saldo = 0; proxnum = proxnum + 1; Dentro da classe ContaComGerador. Dados Finais Não podem ser alterados (constantes); Devem ser inicializados na declaração; Exemplos public final int a = 10; // atributo final public static final string nome = pedro ; // variável estática final 33

Exemplo de um Atributo Final class Circle { public final double pi = 3.14159; double x, y, r; double circunferencia () {return 2 * pi * r; double area () {return pi * r * r; Exemplo de um Atributo Final class Circle { public final double pi = 3.14159; double x, y, r; double circunferencia () { pi = 3.14; return 2 * pi * r; double area () {return pi * r * r; 34

Exemplo de um Atributo Final class CriaCirculo { public static void main (String[] args) { Circulo c1 = new Circulo(); System.out.println(c1.area()); System.out.println(c1.circunferencia()); c1.pi = 3.14; Mét. de Instância x Mét. de Classe Os métodos de classe também são chamados de métodos estáticos; Os métodos estáticos pertencem à classe e não às instâncias; Os métodos estáticos acessam apenas as variáveis estáticas da classe; 35

Exemplo de Métodos Estáticos class Maior { private static int maior (int x, int y) { if (x > y) return x; else return y; public static void main (String [] args) { int m, x, y; x = Util.readInt(); y = Util.readInt(); m = maior (x,y); // m = Maior.maior (x,y); System.out.println(m); Acessando Métodos Estáticas int x, y, resp; x = 10; y = 5; resp = Maior.maior(x, y); Maior m = new Maior(); resp = m.maior(x,y);... resp = maior(x,y); Fora da classe Maior. Dentro da classe Maior. 36

Métodos Finais Não podem ser redefinidos em sub-classes (versão final do método); Exemplos public final void draw( Graphics g ) ; // Método de Instância public final static void draw( Graphics g ) ; // Método de Classe Inicializadores Estáticos Um inicializador estático é um método utilizado para a inicialização das variáveis estáticas; 37

Exemplo de Inic. Estáticos public class Circle{ static private double sines[ ] = new double [ 1000 ]; static private double cosines[ ] = new double [ 1000 ]; static { double x, delta_x; int i; delta_x = (Circle.PI/2)/(1000-1); for (i = 0, x = 0.0; i < 1000; i++ ; x + = delta_x) { sines[ i ] = Math.sin( x ); cosines[ i ] = Math.cos( x);... Ainda estou para ver um problema que, por mais complicado que seja, ao analisa-lo pelo modo correto, não se tornasse ainda mais complicado. Paul Anderson 38

Exercícios Defina uma classe para representar um candidato a uma eleição, com atributos para armazenar o nome do candidato e o número de votos, ambos privados. Defina um método de acesso para cada atributo, um método para incrementar o número de votos do candidato e um construtor para a classe que recebe como argumento o nome do candidato e inicializa o número de votos com zero. Exercícios Desenvolva um programa que cria um candidato com nome de sua escolha. Em seguida, deve ser lido um nome. Se o nome lido for o do seu candidato, incrementar o contador de votos. No final, imprimir o nome do candidato e o total de votos. 39

Ousar é perder o equilíbrio momentaneamente. Não ousar é perder-se Soren Kierkegaard 40