SlideShare uma empresa Scribd logo
Modelagem de Sistemas

Paradigma de
Orientação a Objetos
Persistência de dados via
JDBC
ETE Santa Cruz (Pronatec)
Saulo Rodrigues
Profª Valdinéia, Modelagem de Sistemas (Entrega: 13/04/2015)
Sumário

Paradigma de Orientação a Objetos:
− Introdução;
− Orientação a objetos e Linguagem Estruturada;
− Conceitos Essenciais: Objeto, Mensagem, Método, Atributo, Classe, Encapsulamento,
Polimorfismo, Herança;
− Conclusão.

Persistência de Dados via JDBC:
− Introdução;
− Tipos de drivers;
− JDBC: Exemplo de utilização básica;
− Conclusão.
Paradigmas de Orientação a Objetos
INTRODUÇÃO
O paradgina de Orientação a Objetos (OO ou POO) possui o objetivo, em
conjunto com outras tecnologias, de atenuar o que se convencionou chamar
de "crise do software".
No início da era do computadores o hardware era tão caro que o custo do
software era muitas vezes desprezado nas organizações. As aplicações, por
sua vez, eram infinitamente mais simples, nem sempre justificando o
investimento.
Com o passar do tempo e a diminuição nos custos de hardware, observou-se
claramente um aumento vertiginoso no custo das aplicações, que se
tornaram muito mais caras que o próprio hardware.
O paradigma de Orientação a Objetos veio em maio a este cenário dar um
novo rumo no desenvolvimento de aplicações, tornando-as mais robustas e
ao mesmo tempo mais fáceis de serem produzidas. Levando o uso de
softwares a diversas novas áreas e tornando-o muito mais acessível.
Orientação a objetos e Linguagem Estruturada
Um sistema orientado a objetos é dividido em componentes e não mais em processos.
Imagine um sistema financeiro, onde faríamos toda a administração de uma
empresa. Teríamos as seguintes diferenças:
POO: Teríamos um objeto de fornecedores, por exemplo, onde todas as funções
estariam agrupadas no objeto e em nenhum outro lugar.
Estruturada: As rotinas e funções de fornecedores estaria espalhada em todo o
sistema, como em contas a pagar, contas a receber, cadastro, etc.
Imagine agora o cadastro de fornecedores, com todas as suas rotinas e funções:
Estruturada: Se você futuramente precisar alterar algum dado, função ou propriedade,
o que em seu programa será afetado? O que terá que ser reestruturado? Imagine a
você voltando a fase de testes e analisando todo o seu sistema até ter certeza que a
alteração que você fez não desencadeou um finita listas de alterações que você terá
que fazer em todo o sistema...
Orientação a objetos e Linguagem Estruturada
POO: as propriedades, funções e rotinas do objeto fornecedores estão todas em um
único objeto, encapsulados, facilitando essa necessidade futura de alterações e
atualizações.
Reutilização de código:
Estruturada: É possivel a reutilização de código na programação estruturada porém,
em muitos casos você será obrigado a utilizar o famoso "copiar e colar".
POO: Com a POO você é capaz de elaborar um relacionamento entre diversos
componentes, estabelecendo comunicação entre eles e facilitando assim, e muito a
reutilização de código, além da facilidade de se poder herdar atributos e
comportamentos de outros objetos.
Orientação a objetos e Linguagem Estruturada
Comparação
Conceitos Essenciais

Objeto / instância de uma classe. Um objeto é capaz de armazenar estados através
de seus atributos e reagir a mensagens enviadas a ele, assim como se relacionar e
enviar mensagens a outros objetos. Exemplo de objetos da classe Humanos: João,
José, Maria;

Mensagem é uma chamada a um objeto para invocar um de seus métodos, ativando
um comportamento descrito por sua classe. Também pode ser direcionada
diretamente a uma classe (através de uma invocação a um método estático);

Método definem as habilidades dos objetos. Bidu é uma instância da classe
Cachorro, portanto tem habilidade para latir, implementada através do método de um
latido. Um método em uma classe é apenas uma definição. A ação só ocorre quando
o método é invocado através do objeto, no caso Bidu. Dentro do programa, a
utilização de um método deve afetar apenas um objeto em particular; Todos os
cachorros podem latir, mas você quer que apenas Bidu dê o latido. Normalmente,
uma classe possui diversos métodos, que no caso da classe Cachorro poderiam ser
sente, coma e morda
Conceitos Essenciais

Atributos são características de um objeto. Basicamente a estrutura de dados que
vai representar a classe. Exemplos: Funcionário: nome, endereço, telefone, CPF,...;
Carro: nome, marca, ano, cor, …; Livro: autor, editora, ano. Por sua vez, os atributos
possuem valores. Por exemplo, o atributo cor pode conter o valor azul. O conjunto de
valores dos atributos de um determinado objeto é chamado de estado;

Classe representa um conjunto de objetos com características afins. Uma classe
define o comportamento dos objetos através de seus métodos, e quais estados ele é
capaz de manter através de seus atributos. Exemplo de classe: Os humanos;

Encapsulamento consiste na separação de aspectos internos e externos de um
objeto. Este mecanismo é utilizado amplamente para impedir o acesso direto ao
estado de um objeto (seus atributos), disponibilizando externamente os métodos que
acessam (getters) e alteram (setters) estes estados. Exemplo: você não precisa
conhecer os detalhes dos circuitos de um telefone para utilizá-lo. A carcaça do
telefone encapsula esses detalhes, provendo a você uma interface mais amigável
(os botões, o monofone e os sinais de tom);
Conceitos Essenciais

Polimorfismo consiste em quatro propriedades que a linguagem pode ter (atente para o fato de
que nem toda linguagem orientada a objeto tem implementado todos os tipos de polimorfismo):
− Universal:

Inclusão: um ponteiro para classe mãe pode apontar para uma instância de uma
classe filha (exemplo em Java: "List lista = new LinkedList();" (tipo de polimorfismo
mais básico que existe)

Paramétrico: se restringe ao uso de templates (C++, por exemplo) e generics
(Java/C )♯
− Ad-Hoc:

Sobrecarga: duas funções/métodos com o mesmo nome mas assinaturas diferentes

Coerção: a linguagem que faz as conversões implicitamente (como por exemplo
atribuir um int a um float em C++, isto é aceito mesmo sendo tipos diferentes pois a
conversão é feita implicitamente);

Herança (ou generalização) é o mecanismo pelo qual uma classe (subclasse) pode estender
outra classe (superclasse), aproveitando seus comportamentos (métodos) e variáveis possíveis
(atributos). Um exemplo de herança: Mamífero é superclasse de Humano. Ou seja, um
Humano é um mamífero. Há herança múltipla quando uma subclasse possui mais de uma
superclasse. Essa relação é normalmente chamada de relação "é um";
Conclusão
É inadequado afirmar que o Paradigma de Orientação a Objetos veio substituir
a programação estruturada. Este veio atender a uma nova necessidade no
desenvolvimento de aplicações, e é perfeitamente possível encontrar
vantagens e desvantagens nos dois modelos de programação. Por isso, o
programador deve optar de forma consciente pela tecnologia mais
conveniente, muitas vezes utilizando as duas em uma mesma aplicação.
Rio de Janeiro, 12/04/2015
Referências

Referências:
− Pilares da Programação orientada a objetos http://www.devmedia.com.br/os-4-pilares-da-
programacao-orientada-a-objetos/9264);
− Programação Orientada a Objetos VS. Programação Estruturada
http://www.devmedia.com.br/programacao-orientada-a-objetos-x-programacao-
estruturada/11747
− Orientação a Objetos
http://pt.wikipedia.org/wiki/Orienta%C3%A7%C3%A3o_a_objetos
− O paradigma Orientado a Objetos
http://www.inf.ufes.br/~vitorsouza/wp-content/uploads/academia-br-paradigmaoo.pdf
Persistência de dados via JDBC
INTRODUÇÃO
Em ciência da computação, persistência se refere à característica de um estado que
sobrevive ao processo que o criou. Sem essa capacidade, o estado só existiria na
RAM, e seria perdido quando a RAM parasse (desligando-se o computador por
exemplo).
Isso é conseguido na prática armazenando o estado como dados em armazenamento
não volátil (como em um disco rígido ou memória flash), ou seja, via serialização dos
dados para um formato armazenável e depois os salvando em um arquivo.
Java Database Connectivity ou JDBC é um conjunto de classes e interfaces (API)
escritas em Java que fazem o envio de instruções SQL para qualquer banco de
dados relacional; Api de baixo nível e base para api’s de alto nível; Amplia o que
você pode fazer com Java; Possibilita o uso de bancos de dados já instalados; Para
cada banco de dados há um driver JDBC que pode cair em quatro categorias.
Tipos de Drivers
Tipos de Driver
Ponte JDBC-ODBC
É o tipo mais simples mas restrito à plataforma Windows. Utiliza ODBC para
conectar-se com o banco de dados, convertendo métodos JDBC em chamadas às
funções do ODBC. Esta ponte é normalmente usada quando não há um driver puro-
Java (tipo 4) para determinado banco de dados, pois seu uso é desencorajado
devido à dependência de plataforma;
Driver API-Nativo
O driver API-Nativo traduz as chamadas JDBC para as chamadas da API cliente do
banco de dados usado. Como a Ponte JDBC-ODBC, pode precisar de software extra
instalado na máquina cliente;
Tipos de Drivers
Driver de Protocolo de Rede
Traduz a chamada JDBC para um protocolo de rede independente do banco de dados
utilizado, que é traduzido para o protocolo do banco de dados por um servidor. Por
utilizar um protocolo independente, pode conectar as aplicações clientes Java a vários
bancos de dados diferentes. É o modelo mais flexível e pode ser visto como um driver
intermediário, pois também atua como Middleware. É mais utilizado para banco de dados
antigos como estatais de governos;
Driver Nativo
Converte as chamadas JDBC diretamente no protocolo do banco de dados utilizado.
Implementado em Java, normalmente é independente de plataforma e escrito pelos
próprios desenvolvedores. É o tipo mais recomendado para ser usado.
Exemplo de utilização do JDBC
O código a seguir, devidamente comentado, é um
exemplo de comunicação com o banco de dados
via JDBC:
import java.sql.*;
import java.util.ArrayList;
public class MySQLTutor {
private Connection c;
private ResultSet table;
public MySQLTutor(String driverName) throws
ClassNotFoundException {
// carrega driver
Class.forName(driverName);
}
public void connect(String user, String password)
throws SQLException {
// estabelece conexao com banco de dados
c =
DriverManager.getConnection("jdbc:mysql://localho
st/test?user="
+ user + "&password=" + password);
}
public void connect(String user) throws
SQLException {
connect(user, "");
}
public void connect() throws SQLException {
connect("anonymous", "");
}
Exemplo
public void query(String sql) throws SQLException {
// monta e executa consulta
Statement s = c.createStatement();
table = s.executeQuery(sql);
}
public String structure() throws SQLException {
// obtem e transforma em String a estrutura da tabela
StringBuffer str = new StringBuffer("[ ");
ResultSetMetaData m = table.getMetaData();
int colCount = m.getColumnCount();
for (int i=1; i<=colCount; ++i)
str.append(m.getColumnName(i) + " t");
return str.append(" ]").toString();
}
public void close() throws SQLException {
c.close();
}
public static void main(String[] args) {
String driverName="org.gjt.mm.mysql.Driver"; // MySQL
// String driverName="postgresql.Driver"; // PostgreSQL
try {
MySQLTutor db = new MySQLTutor(driverName);
if (args.length == 1)
db.connect(args[0]); // primeiro argumento: username
else if (args.length == 2)
db.connect(args[0],args[1]); // segundo argumento: password
else
db.connect( ); // acesso anonimo assumido
Exemplo
// neste exemplo, uma consulta fixa
db.query("Select * from pet");
System.out.println(db.structure());
System.out.println(db.showAll());
// fecha conexao com banco de dados
db.close();
}
catch (SQLException E) {
System.err.println("SQLException: " +
E.getMessage());
System.err.println("SQLState: " +
E.getSQLState());
System.err.println("VendorError: " +
E.getErrorCode());
}
catch (Exception e) {
e.printStackTrace();
}
}
}
Conclusão
Em Java temos um conjunto de predefinições e métodos coerentes para estabelecer
comunicação com o banco de dados além da estrutura JDBC. Temos ainda outras
tecnologias, como o Hibernate, que é um framework para o mapeamento objeto-
relacional escrito na linguagem Java, mas também é disponível em .Net como o nome
NHibernate. Este framework facilita o mapeamento dos atributos entre uma base
tradicional de dados relacionais e o modelo objeto de uma aplicação, mediante o uso
de arquivos (XML) ou anotações Java (veja Annotation (java)).
Hibernate é um software livre de código aberto distribuído com a licença LGPL.
Rio de Janeiro, 12/04/2015
Referências

Referências:
– Hibernate - http://pt.wikipedia.org/wiki/Hibernate
– Exemplo - http://www.dca.fee.unicamp.br/cursos/PooJava/javadb/jdbcsample.html
– JDBC - http://pt.wikipedia.org/wiki/JDBC

Mais conteúdo relacionado

Mais procurados

Programação orientada a objetos – II
Programação orientada a objetos – IIProgramação orientada a objetos – II
Programação orientada a objetos – II
Gabriel Faustino
 
Seminário flyweight
Seminário flyweightSeminário flyweight
Seminário flyweight
Mateus Amaral
 
Padrões de projeto - Adapter, Proxy, Composite e Bridge
Padrões de projeto - Adapter, Proxy, Composite e BridgePadrões de projeto - Adapter, Proxy, Composite e Bridge
Padrões de projeto - Adapter, Proxy, Composite e Bridge
Lorran Pegoretti
 
Programação Orientada a Objetos
Programação Orientada a ObjetosProgramação Orientada a Objetos
Programação Orientada a Objetos
Orlando Junior
 
Paradigma Orientado a Objeto
Paradigma Orientado a ObjetoParadigma Orientado a Objeto
Paradigma Orientado a Objeto
Tony Alexander Hild
 
Apresentação curso de Extensão em Java (UERJ-IME) v1
Apresentação curso de Extensão em Java (UERJ-IME) v1Apresentação curso de Extensão em Java (UERJ-IME) v1
Apresentação curso de Extensão em Java (UERJ-IME) v1
Marcelo Zeferino
 
Programação orientada a objetos
Programação orientada a objetosProgramação orientada a objetos
Programação orientada a objetos
Cleyton Ferrari
 
Padrões de Projeto de Software
Padrões de Projeto de SoftwarePadrões de Projeto de Software
Padrões de Projeto de Software
Fabio Moura Pereira
 
Orientação a Objetos
Orientação a ObjetosOrientação a Objetos
Orientação a Objetos
Edy Segura
 
Paradigmas de Linguagens de Programação - Modularização, componentização e re...
Paradigmas de Linguagens de Programação - Modularização, componentização e re...Paradigmas de Linguagens de Programação - Modularização, componentização e re...
Paradigmas de Linguagens de Programação - Modularização, componentização e re...
Adriano Teixeira de Souza
 
Design Patterns - Adapter e Decorator
Design Patterns - Adapter e DecoratorDesign Patterns - Adapter e Decorator
Design Patterns - Adapter e Decorator
Murilo Adriano Vasconcelos
 
Linguagem Java - Conceitos e Técnicas
Linguagem Java - Conceitos e TécnicasLinguagem Java - Conceitos e Técnicas
Linguagem Java - Conceitos e Técnicas
Breno Vitorino
 
Programação Orientada a Objetos - Conceitos básicos da linguagem JAVA
Programação Orientada a Objetos - Conceitos básicos da linguagem JAVAProgramação Orientada a Objetos - Conceitos básicos da linguagem JAVA
Programação Orientada a Objetos - Conceitos básicos da linguagem JAVA
Cristiano Almeida
 
Apresentação java
Apresentação javaApresentação java
Apresentação java
munosai
 
Programação Orientada a Objetos
Programação Orientada a ObjetosProgramação Orientada a Objetos
Programação Orientada a Objetos
Igor Takenami
 
Programação Orientada a Objetos - 001
Programação Orientada a Objetos - 001Programação Orientada a Objetos - 001
Programação Orientada a Objetos - 001
José Volmei Dal Prá Junior
 
Paradigmas de Linguagens de Programação - Biblioteca de Classes e Frameworks
Paradigmas de Linguagens de Programação - Biblioteca de Classes e Frameworks Paradigmas de Linguagens de Programação - Biblioteca de Classes e Frameworks
Paradigmas de Linguagens de Programação - Biblioteca de Classes e Frameworks
Adriano Teixeira de Souza
 
Poo slides01
Poo slides01Poo slides01
Poo slides01
jmtofoli
 
UML
UMLUML
Aula de Introdução - JAVA
Aula de Introdução  - JAVAAula de Introdução  - JAVA
Aula de Introdução - JAVA
Moises Omena
 

Mais procurados (20)

Programação orientada a objetos – II
Programação orientada a objetos – IIProgramação orientada a objetos – II
Programação orientada a objetos – II
 
Seminário flyweight
Seminário flyweightSeminário flyweight
Seminário flyweight
 
Padrões de projeto - Adapter, Proxy, Composite e Bridge
Padrões de projeto - Adapter, Proxy, Composite e BridgePadrões de projeto - Adapter, Proxy, Composite e Bridge
Padrões de projeto - Adapter, Proxy, Composite e Bridge
 
Programação Orientada a Objetos
Programação Orientada a ObjetosProgramação Orientada a Objetos
Programação Orientada a Objetos
 
Paradigma Orientado a Objeto
Paradigma Orientado a ObjetoParadigma Orientado a Objeto
Paradigma Orientado a Objeto
 
Apresentação curso de Extensão em Java (UERJ-IME) v1
Apresentação curso de Extensão em Java (UERJ-IME) v1Apresentação curso de Extensão em Java (UERJ-IME) v1
Apresentação curso de Extensão em Java (UERJ-IME) v1
 
Programação orientada a objetos
Programação orientada a objetosProgramação orientada a objetos
Programação orientada a objetos
 
Padrões de Projeto de Software
Padrões de Projeto de SoftwarePadrões de Projeto de Software
Padrões de Projeto de Software
 
Orientação a Objetos
Orientação a ObjetosOrientação a Objetos
Orientação a Objetos
 
Paradigmas de Linguagens de Programação - Modularização, componentização e re...
Paradigmas de Linguagens de Programação - Modularização, componentização e re...Paradigmas de Linguagens de Programação - Modularização, componentização e re...
Paradigmas de Linguagens de Programação - Modularização, componentização e re...
 
Design Patterns - Adapter e Decorator
Design Patterns - Adapter e DecoratorDesign Patterns - Adapter e Decorator
Design Patterns - Adapter e Decorator
 
Linguagem Java - Conceitos e Técnicas
Linguagem Java - Conceitos e TécnicasLinguagem Java - Conceitos e Técnicas
Linguagem Java - Conceitos e Técnicas
 
Programação Orientada a Objetos - Conceitos básicos da linguagem JAVA
Programação Orientada a Objetos - Conceitos básicos da linguagem JAVAProgramação Orientada a Objetos - Conceitos básicos da linguagem JAVA
Programação Orientada a Objetos - Conceitos básicos da linguagem JAVA
 
Apresentação java
Apresentação javaApresentação java
Apresentação java
 
Programação Orientada a Objetos
Programação Orientada a ObjetosProgramação Orientada a Objetos
Programação Orientada a Objetos
 
Programação Orientada a Objetos - 001
Programação Orientada a Objetos - 001Programação Orientada a Objetos - 001
Programação Orientada a Objetos - 001
 
Paradigmas de Linguagens de Programação - Biblioteca de Classes e Frameworks
Paradigmas de Linguagens de Programação - Biblioteca de Classes e Frameworks Paradigmas de Linguagens de Programação - Biblioteca de Classes e Frameworks
Paradigmas de Linguagens de Programação - Biblioteca de Classes e Frameworks
 
Poo slides01
Poo slides01Poo slides01
Poo slides01
 
UML
UMLUML
UML
 
Aula de Introdução - JAVA
Aula de Introdução  - JAVAAula de Introdução  - JAVA
Aula de Introdução - JAVA
 

Semelhante a Modelagem de sistemas

Análise de sistemas oo 1
Análise de sistemas oo   1Análise de sistemas oo   1
Análise de sistemas oo 1
Maurício Linhares
 
Apresentação faef
Apresentação faefApresentação faef
Apresentação faef
Lucas Simões Maistro
 
Net uma revisão sobre a programação orientada a objetos
Net   uma revisão sobre a programação orientada a objetosNet   uma revisão sobre a programação orientada a objetos
Net uma revisão sobre a programação orientada a objetos
LP Maquinas
 
Reutilização
ReutilizaçãoReutilização
Reutilização
emjorge
 
CURSO DELPHI FUND. CLIENT SERVER (DIURNO)
CURSO DELPHI FUND. CLIENT SERVER (DIURNO) CURSO DELPHI FUND. CLIENT SERVER (DIURNO)
CURSO DELPHI FUND. CLIENT SERVER (DIURNO)
Grupo Treinar
 
3 oo-concepts
3 oo-concepts3 oo-concepts
3 oo-concepts
jorge600
 
3 oo-concepts
3 oo-concepts3 oo-concepts
3 oo-concepts
Valdomiro Morais
 
Domain-Driven Design
Domain-Driven DesignDomain-Driven Design
Domain-Driven Design
Comunidade NetPonto
 
Banco de dados_orientado_a_objetos
Banco de dados_orientado_a_objetosBanco de dados_orientado_a_objetos
Banco de dados_orientado_a_objetos
Fábio José da Silva
 
Apresentação final
Apresentação finalApresentação final
Apresentação final
valmon
 
Apresentação Introdução Design Patterns
Apresentação Introdução Design PatternsApresentação Introdução Design Patterns
Apresentação Introdução Design Patterns
Lucas Simões Maistro
 
01 Orientacao A Objetos Programacao
01   Orientacao A Objetos   Programacao01   Orientacao A Objetos   Programacao
01 Orientacao A Objetos Programacao
taniamaciel
 
Design Patterns
Design PatternsDesign Patterns
Design Patterns
Glaucio Scheibel
 
DDD e PHP - TDC 2012
DDD e PHP - TDC 2012DDD e PHP - TDC 2012
DDD e PHP - TDC 2012
Luís Cobucci
 
Aula1
Aula1Aula1
Aula1
mentrixmax
 
Desmistificando o Framework da Zend
Desmistificando o Framework da ZendDesmistificando o Framework da Zend
Desmistificando o Framework da Zend
Domingos Teruel
 
Java com Excelência
Java com ExcelênciaJava com Excelência
Java com Excelência
Brazoft Solutions
 
Apresentação versão 1.5
Apresentação   versão 1.5Apresentação   versão 1.5
Apresentação versão 1.5
oliveiraprog
 
Construção de Frameworks com Annotation e Reflection API em Java
Construção de Frameworks com Annotation e Reflection API em JavaConstrução de Frameworks com Annotation e Reflection API em Java
Construção de Frameworks com Annotation e Reflection API em Java
Fernando Camargo
 
Padrões de projeto - Martin Fowler - P of EAA
Padrões de projeto - Martin Fowler - P of EAAPadrões de projeto - Martin Fowler - P of EAA
Padrões de projeto - Martin Fowler - P of EAA
Aricelio Souza
 

Semelhante a Modelagem de sistemas (20)

Análise de sistemas oo 1
Análise de sistemas oo   1Análise de sistemas oo   1
Análise de sistemas oo 1
 
Apresentação faef
Apresentação faefApresentação faef
Apresentação faef
 
Net uma revisão sobre a programação orientada a objetos
Net   uma revisão sobre a programação orientada a objetosNet   uma revisão sobre a programação orientada a objetos
Net uma revisão sobre a programação orientada a objetos
 
Reutilização
ReutilizaçãoReutilização
Reutilização
 
CURSO DELPHI FUND. CLIENT SERVER (DIURNO)
CURSO DELPHI FUND. CLIENT SERVER (DIURNO) CURSO DELPHI FUND. CLIENT SERVER (DIURNO)
CURSO DELPHI FUND. CLIENT SERVER (DIURNO)
 
3 oo-concepts
3 oo-concepts3 oo-concepts
3 oo-concepts
 
3 oo-concepts
3 oo-concepts3 oo-concepts
3 oo-concepts
 
Domain-Driven Design
Domain-Driven DesignDomain-Driven Design
Domain-Driven Design
 
Banco de dados_orientado_a_objetos
Banco de dados_orientado_a_objetosBanco de dados_orientado_a_objetos
Banco de dados_orientado_a_objetos
 
Apresentação final
Apresentação finalApresentação final
Apresentação final
 
Apresentação Introdução Design Patterns
Apresentação Introdução Design PatternsApresentação Introdução Design Patterns
Apresentação Introdução Design Patterns
 
01 Orientacao A Objetos Programacao
01   Orientacao A Objetos   Programacao01   Orientacao A Objetos   Programacao
01 Orientacao A Objetos Programacao
 
Design Patterns
Design PatternsDesign Patterns
Design Patterns
 
DDD e PHP - TDC 2012
DDD e PHP - TDC 2012DDD e PHP - TDC 2012
DDD e PHP - TDC 2012
 
Aula1
Aula1Aula1
Aula1
 
Desmistificando o Framework da Zend
Desmistificando o Framework da ZendDesmistificando o Framework da Zend
Desmistificando o Framework da Zend
 
Java com Excelência
Java com ExcelênciaJava com Excelência
Java com Excelência
 
Apresentação versão 1.5
Apresentação   versão 1.5Apresentação   versão 1.5
Apresentação versão 1.5
 
Construção de Frameworks com Annotation e Reflection API em Java
Construção de Frameworks com Annotation e Reflection API em JavaConstrução de Frameworks com Annotation e Reflection API em Java
Construção de Frameworks com Annotation e Reflection API em Java
 
Padrões de projeto - Martin Fowler - P of EAA
Padrões de projeto - Martin Fowler - P of EAAPadrões de projeto - Martin Fowler - P of EAA
Padrões de projeto - Martin Fowler - P of EAA
 

Modelagem de sistemas

  • 1. Modelagem de Sistemas  Paradigma de Orientação a Objetos Persistência de dados via JDBC
  • 2. ETE Santa Cruz (Pronatec) Saulo Rodrigues Profª Valdinéia, Modelagem de Sistemas (Entrega: 13/04/2015) Sumário  Paradigma de Orientação a Objetos: − Introdução; − Orientação a objetos e Linguagem Estruturada; − Conceitos Essenciais: Objeto, Mensagem, Método, Atributo, Classe, Encapsulamento, Polimorfismo, Herança; − Conclusão.  Persistência de Dados via JDBC: − Introdução; − Tipos de drivers; − JDBC: Exemplo de utilização básica; − Conclusão.
  • 3. Paradigmas de Orientação a Objetos INTRODUÇÃO O paradgina de Orientação a Objetos (OO ou POO) possui o objetivo, em conjunto com outras tecnologias, de atenuar o que se convencionou chamar de "crise do software". No início da era do computadores o hardware era tão caro que o custo do software era muitas vezes desprezado nas organizações. As aplicações, por sua vez, eram infinitamente mais simples, nem sempre justificando o investimento. Com o passar do tempo e a diminuição nos custos de hardware, observou-se claramente um aumento vertiginoso no custo das aplicações, que se tornaram muito mais caras que o próprio hardware. O paradigma de Orientação a Objetos veio em maio a este cenário dar um novo rumo no desenvolvimento de aplicações, tornando-as mais robustas e ao mesmo tempo mais fáceis de serem produzidas. Levando o uso de softwares a diversas novas áreas e tornando-o muito mais acessível.
  • 4. Orientação a objetos e Linguagem Estruturada Um sistema orientado a objetos é dividido em componentes e não mais em processos. Imagine um sistema financeiro, onde faríamos toda a administração de uma empresa. Teríamos as seguintes diferenças: POO: Teríamos um objeto de fornecedores, por exemplo, onde todas as funções estariam agrupadas no objeto e em nenhum outro lugar. Estruturada: As rotinas e funções de fornecedores estaria espalhada em todo o sistema, como em contas a pagar, contas a receber, cadastro, etc. Imagine agora o cadastro de fornecedores, com todas as suas rotinas e funções: Estruturada: Se você futuramente precisar alterar algum dado, função ou propriedade, o que em seu programa será afetado? O que terá que ser reestruturado? Imagine a você voltando a fase de testes e analisando todo o seu sistema até ter certeza que a alteração que você fez não desencadeou um finita listas de alterações que você terá que fazer em todo o sistema...
  • 5. Orientação a objetos e Linguagem Estruturada POO: as propriedades, funções e rotinas do objeto fornecedores estão todas em um único objeto, encapsulados, facilitando essa necessidade futura de alterações e atualizações. Reutilização de código: Estruturada: É possivel a reutilização de código na programação estruturada porém, em muitos casos você será obrigado a utilizar o famoso "copiar e colar". POO: Com a POO você é capaz de elaborar um relacionamento entre diversos componentes, estabelecendo comunicação entre eles e facilitando assim, e muito a reutilização de código, além da facilidade de se poder herdar atributos e comportamentos de outros objetos.
  • 6. Orientação a objetos e Linguagem Estruturada Comparação
  • 7. Conceitos Essenciais  Objeto / instância de uma classe. Um objeto é capaz de armazenar estados através de seus atributos e reagir a mensagens enviadas a ele, assim como se relacionar e enviar mensagens a outros objetos. Exemplo de objetos da classe Humanos: João, José, Maria;  Mensagem é uma chamada a um objeto para invocar um de seus métodos, ativando um comportamento descrito por sua classe. Também pode ser direcionada diretamente a uma classe (através de uma invocação a um método estático);  Método definem as habilidades dos objetos. Bidu é uma instância da classe Cachorro, portanto tem habilidade para latir, implementada através do método de um latido. Um método em uma classe é apenas uma definição. A ação só ocorre quando o método é invocado através do objeto, no caso Bidu. Dentro do programa, a utilização de um método deve afetar apenas um objeto em particular; Todos os cachorros podem latir, mas você quer que apenas Bidu dê o latido. Normalmente, uma classe possui diversos métodos, que no caso da classe Cachorro poderiam ser sente, coma e morda
  • 8. Conceitos Essenciais  Atributos são características de um objeto. Basicamente a estrutura de dados que vai representar a classe. Exemplos: Funcionário: nome, endereço, telefone, CPF,...; Carro: nome, marca, ano, cor, …; Livro: autor, editora, ano. Por sua vez, os atributos possuem valores. Por exemplo, o atributo cor pode conter o valor azul. O conjunto de valores dos atributos de um determinado objeto é chamado de estado;  Classe representa um conjunto de objetos com características afins. Uma classe define o comportamento dos objetos através de seus métodos, e quais estados ele é capaz de manter através de seus atributos. Exemplo de classe: Os humanos;  Encapsulamento consiste na separação de aspectos internos e externos de um objeto. Este mecanismo é utilizado amplamente para impedir o acesso direto ao estado de um objeto (seus atributos), disponibilizando externamente os métodos que acessam (getters) e alteram (setters) estes estados. Exemplo: você não precisa conhecer os detalhes dos circuitos de um telefone para utilizá-lo. A carcaça do telefone encapsula esses detalhes, provendo a você uma interface mais amigável (os botões, o monofone e os sinais de tom);
  • 9. Conceitos Essenciais  Polimorfismo consiste em quatro propriedades que a linguagem pode ter (atente para o fato de que nem toda linguagem orientada a objeto tem implementado todos os tipos de polimorfismo): − Universal:  Inclusão: um ponteiro para classe mãe pode apontar para uma instância de uma classe filha (exemplo em Java: "List lista = new LinkedList();" (tipo de polimorfismo mais básico que existe)  Paramétrico: se restringe ao uso de templates (C++, por exemplo) e generics (Java/C )♯ − Ad-Hoc:  Sobrecarga: duas funções/métodos com o mesmo nome mas assinaturas diferentes  Coerção: a linguagem que faz as conversões implicitamente (como por exemplo atribuir um int a um float em C++, isto é aceito mesmo sendo tipos diferentes pois a conversão é feita implicitamente);  Herança (ou generalização) é o mecanismo pelo qual uma classe (subclasse) pode estender outra classe (superclasse), aproveitando seus comportamentos (métodos) e variáveis possíveis (atributos). Um exemplo de herança: Mamífero é superclasse de Humano. Ou seja, um Humano é um mamífero. Há herança múltipla quando uma subclasse possui mais de uma superclasse. Essa relação é normalmente chamada de relação "é um";
  • 10. Conclusão É inadequado afirmar que o Paradigma de Orientação a Objetos veio substituir a programação estruturada. Este veio atender a uma nova necessidade no desenvolvimento de aplicações, e é perfeitamente possível encontrar vantagens e desvantagens nos dois modelos de programação. Por isso, o programador deve optar de forma consciente pela tecnologia mais conveniente, muitas vezes utilizando as duas em uma mesma aplicação. Rio de Janeiro, 12/04/2015
  • 11. Referências  Referências: − Pilares da Programação orientada a objetos http://www.devmedia.com.br/os-4-pilares-da- programacao-orientada-a-objetos/9264); − Programação Orientada a Objetos VS. Programação Estruturada http://www.devmedia.com.br/programacao-orientada-a-objetos-x-programacao- estruturada/11747 − Orientação a Objetos http://pt.wikipedia.org/wiki/Orienta%C3%A7%C3%A3o_a_objetos − O paradigma Orientado a Objetos http://www.inf.ufes.br/~vitorsouza/wp-content/uploads/academia-br-paradigmaoo.pdf
  • 12. Persistência de dados via JDBC INTRODUÇÃO Em ciência da computação, persistência se refere à característica de um estado que sobrevive ao processo que o criou. Sem essa capacidade, o estado só existiria na RAM, e seria perdido quando a RAM parasse (desligando-se o computador por exemplo). Isso é conseguido na prática armazenando o estado como dados em armazenamento não volátil (como em um disco rígido ou memória flash), ou seja, via serialização dos dados para um formato armazenável e depois os salvando em um arquivo. Java Database Connectivity ou JDBC é um conjunto de classes e interfaces (API) escritas em Java que fazem o envio de instruções SQL para qualquer banco de dados relacional; Api de baixo nível e base para api’s de alto nível; Amplia o que você pode fazer com Java; Possibilita o uso de bancos de dados já instalados; Para cada banco de dados há um driver JDBC que pode cair em quatro categorias.
  • 13. Tipos de Drivers Tipos de Driver Ponte JDBC-ODBC É o tipo mais simples mas restrito à plataforma Windows. Utiliza ODBC para conectar-se com o banco de dados, convertendo métodos JDBC em chamadas às funções do ODBC. Esta ponte é normalmente usada quando não há um driver puro- Java (tipo 4) para determinado banco de dados, pois seu uso é desencorajado devido à dependência de plataforma; Driver API-Nativo O driver API-Nativo traduz as chamadas JDBC para as chamadas da API cliente do banco de dados usado. Como a Ponte JDBC-ODBC, pode precisar de software extra instalado na máquina cliente;
  • 14. Tipos de Drivers Driver de Protocolo de Rede Traduz a chamada JDBC para um protocolo de rede independente do banco de dados utilizado, que é traduzido para o protocolo do banco de dados por um servidor. Por utilizar um protocolo independente, pode conectar as aplicações clientes Java a vários bancos de dados diferentes. É o modelo mais flexível e pode ser visto como um driver intermediário, pois também atua como Middleware. É mais utilizado para banco de dados antigos como estatais de governos; Driver Nativo Converte as chamadas JDBC diretamente no protocolo do banco de dados utilizado. Implementado em Java, normalmente é independente de plataforma e escrito pelos próprios desenvolvedores. É o tipo mais recomendado para ser usado.
  • 15. Exemplo de utilização do JDBC O código a seguir, devidamente comentado, é um exemplo de comunicação com o banco de dados via JDBC: import java.sql.*; import java.util.ArrayList; public class MySQLTutor { private Connection c; private ResultSet table; public MySQLTutor(String driverName) throws ClassNotFoundException { // carrega driver Class.forName(driverName); } public void connect(String user, String password) throws SQLException { // estabelece conexao com banco de dados c = DriverManager.getConnection("jdbc:mysql://localho st/test?user=" + user + "&password=" + password); } public void connect(String user) throws SQLException { connect(user, ""); } public void connect() throws SQLException { connect("anonymous", ""); }
  • 16. Exemplo public void query(String sql) throws SQLException { // monta e executa consulta Statement s = c.createStatement(); table = s.executeQuery(sql); } public String structure() throws SQLException { // obtem e transforma em String a estrutura da tabela StringBuffer str = new StringBuffer("[ "); ResultSetMetaData m = table.getMetaData(); int colCount = m.getColumnCount(); for (int i=1; i<=colCount; ++i) str.append(m.getColumnName(i) + " t"); return str.append(" ]").toString(); } public void close() throws SQLException { c.close(); } public static void main(String[] args) { String driverName="org.gjt.mm.mysql.Driver"; // MySQL // String driverName="postgresql.Driver"; // PostgreSQL try { MySQLTutor db = new MySQLTutor(driverName); if (args.length == 1) db.connect(args[0]); // primeiro argumento: username else if (args.length == 2) db.connect(args[0],args[1]); // segundo argumento: password else db.connect( ); // acesso anonimo assumido
  • 17. Exemplo // neste exemplo, uma consulta fixa db.query("Select * from pet"); System.out.println(db.structure()); System.out.println(db.showAll()); // fecha conexao com banco de dados db.close(); } catch (SQLException E) { System.err.println("SQLException: " + E.getMessage()); System.err.println("SQLState: " + E.getSQLState()); System.err.println("VendorError: " + E.getErrorCode()); } catch (Exception e) { e.printStackTrace(); } } }
  • 18. Conclusão Em Java temos um conjunto de predefinições e métodos coerentes para estabelecer comunicação com o banco de dados além da estrutura JDBC. Temos ainda outras tecnologias, como o Hibernate, que é um framework para o mapeamento objeto- relacional escrito na linguagem Java, mas também é disponível em .Net como o nome NHibernate. Este framework facilita o mapeamento dos atributos entre uma base tradicional de dados relacionais e o modelo objeto de uma aplicação, mediante o uso de arquivos (XML) ou anotações Java (veja Annotation (java)). Hibernate é um software livre de código aberto distribuído com a licença LGPL. Rio de Janeiro, 12/04/2015
  • 19. Referências  Referências: – Hibernate - http://pt.wikipedia.org/wiki/Hibernate – Exemplo - http://www.dca.fee.unicamp.br/cursos/PooJava/javadb/jdbcsample.html – JDBC - http://pt.wikipedia.org/wiki/JDBC