Modelagem de sistemas

132 visualizações

Publicada em

Modelagem de sistemas

Publicada em: Tecnologia
0 comentários
0 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Sem downloads
Visualizações
Visualizações totais
132
No SlideShare
0
A partir de incorporações
0
Número de incorporações
8
Ações
Compartilhamentos
0
Downloads
0
Comentários
0
Gostaram
0
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Modelagem de sistemas

  1. 1. Modelagem de Sistemas  Paradigma de Orientação a Objetos Persistência de dados via JDBC
  2. 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. 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. 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. 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. 6. Orientação a objetos e Linguagem Estruturada Comparação
  7. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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

×