Buscar

APS UNIP Redes 4 Semestre

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 73 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 73 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 73 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

2
Ciências da Computação (CC) - 5° semestre
Grupo 5
Alef Pereira Alves – D942972
Eduardo Muterle – F074CE3
Felipe Pichinine – N4443C8
Vinícius Rodrigues Christovão – F0357J8
Willian dos Santos Valentim – N496DE8
			 Docentes: Arthur Battaglia
Trabalho Semestral
 Desenvolvimento de uma ferramenta para comunicação em rede
 (Confirmação de recebimento de mensagens via chat)
São Paulo – SP
2020
Índice
	
1. Objetivo 3
2. Introdução 	 3
3. Redes de Computadores	 6
3.1. História 	 6
3.2. Protocolo TCP/IP e Sockets
3.3. Cliente/Servidor
3.4. Banco de dados
3.5. Java
 3.5.1. interdisciplinaridade
3.6. Tecnologias Empregadas
 3.6.1. Gerenciador de banco de dados MySQL
 3.6.2. Java Swing
 3.6.2. Java Hibernate
4. Projeto (Estrutura do Programa)
 4.1. Protótipos de telas
 4.2. Módulos
5. Desenvolvimento
6. Fichas da APS
7. Relatório de linhas de código
1. OBJETIVO
Esse trabalho tem como finalidade o desenvolvimento em Java de uma ferramenta para comunicação em rede. Será Criada uma aplicação que permita que duas ou mais pessoas possam se comunicar em uma rede, utilizando o protocolo TCP/IP, através de um chat onde será possível a Secretaria de Estado do Meio ambiente se comunicar com equipes que investigam possíveis poluições ao Rio Tietê partindo de Indústrias locais. 
2. INTRODUÇÂO
O projeto tem o intuito de facilitar de forma simples e eficiente a comunicação entre, por exemplo, equipes de investigadores das causas de poluição e a Secretaria de Estado do Meio Ambiente ou entre funcionários de uma empresa comunicar reporte de ações ou questionamentos em forma de texto com algum superior. Também é possível utilizar o programa para comunicação fora de empresas, como por exemplo criar uma rede entre amigos para se socializar de forma privada entre si.
O rio Tietê é um dos grandes ícones do estado de São Paulo. Seu curso é responsável por abastecer, de forma direta, quase 20 milhões de habitantes, além de outros milhares que se beneficiam de forma indireta, como pela produção de energia. Além disso, é o rio mais importante do estado e um dos mais importantes da Região Sudeste. Entretanto, também é um dos mais poluídos do país. 
 Figura 1: Rio Tietê na cidade de São Paulo, ao lado da marginal que recebe o mesmo nome.
Comprimento
De acordo com o Departamento de Águas e Energia Elétrica do Estado de São Paulo, o rio Tietê, desde sua nascente até a sua foz, tem um comprimento de 1.136 quilômetros, passando por 62 cidades paulistas até desembocar no Rio Paraná, na fronteira com Mato Grosso do Sul.
Principais cidades
Salesópolis; Mogi das Cruzes; Itaquaquecetuba; São Paulo; Osasco; Barueri; Barra Bonita; Tietê; Laranjal Paulista; Sales; Anhembi.
Importância do rio Tietê
O rio Tietê é amplamente usado pela população paulista para diversas atividades, como navegação, turismo, produção de energia, uso em plantações agrícolas, abastecimento de cidades, enfim, é um rio que deve ser tratado de forma grandiosa, assim como é sua serventia à população.
No início do século passado, o Tietê proporcionou momentos inesquecíveis para quem desfrutava de suas águas. Lazer, piqueniques, encontros nos finais de semana, natação e outras atividades similares eram frequentes nas margens do rio. Porém, a poluição foi maior do que o desejo de proteção, e essas atividades, atualmente, pelo menos nos trechos próximos à cidade de São Paulo, são praticamente impossíveis.
 Figura 2: Bagaço de cana sendo transportado pelo rio Tietê.
Curiosidade: o estado de São Paulo é o maior produtor de cana do país.
Ainda assim, com a poluição e contaminação sofridas pelo desenvolvimento urbano e industrial do estado, é no Tietê que estão localizadas as usinas hidrelétricas mais importantes: Ibitinga, Bariri e Barra Bonita são alguns dos exemplos de usinas que geram energia para o estado mais rico do Brasil.
.
Figura 3: Poluição em um dos trechos do Tietê, na cidade de Itu.
Em 1992, a Sabesp criou o Projeto Tietê, que prevê um aumento na quantidade de tratamento de esgoto que é lançado no rio. De acordo com a empresa, desde que o projeto se iniciou, mais de 350 milhões de litros de esgoto foram retirados e tratados. O índice ainda é pequeno, mas prova que algo está sendo feito.
Entretanto, a conscientização popular precisa ser mais eficaz. Ao longo do século XX, a população paulista preferiu virar as costas para seu principal rio. É comum, ao longo do curso do rio na região metropolitana da capital, encontrar pneus, geladeiras, carcaças de automóveis, sofás, entre vários outros itens de uso doméstico, todos jogados pela população.
Para aprimorar essa conscientização, foi escolhido o dia 22 de setembro como o Dia do Rio Tietê, um rio que foi tão útil aos paulistas, mas que está precisando de cuidados. Se a população não mudar de atitude, a situação continuará crítica e o projeto de despoluição não trará os resultados esperados. A saúde do Tietê não depende só das políticas públicas, mas de todos nós.
3. Redes de computadores
 3.1. História
Tudo começou por volta da década de 60 onde a rede telefônica dominava mundialmente, a voz era transmitida por comutação de circuitos a uma taxa constante entre a origem e o seu destino. Os minis e os microcomputadores estavam sendo desenvolvidos com menos requisitos importantes como umidade e temperatura facilitando assim a instalação em diversas localizações, mas faltava algo para unir estes computadores.
Os custos dos computadores eram altos para a década, mas pode-se dizer que com a multiprogramação surgindo começou a ocorrer à necessidade de alguma forma interligar os computadores para que pudessem transmitir informações entre os usuários que estavam em locais diferentes. O tráfego gerado por estes usuários ocorreria em uma sequência de atividades, onde ao acionar um comando a um computador distante (remoto), este permaneceria por alguns instantes inativo, explorando e aguardando uma resposta.
Na busca de transformação da comutação de circuitos para uma comutação de pacotes, três grupos de pesquisadores individuais começaram a estudar sendo o primeiro em 1961, onde Leonard Kleinrock nos laboratórios MIT usou a teoria das filas, a comutação de pacotes baseada no tráfego em rajadas. Em 1964, Paul Baran do Rand Institute começou sua pesquisa para usar a comutação de pacotes para segurança de transmissão de voz para as redes militares da época. Já na Inglaterra, Donald Davies e Roger Scantlebury estavam desenvolvendo ideias para o NPL (National Physical Laboratory). Estes trabalhos lideravam o projeto de ciência de computadores na ARPA (EUA – Agência de Projetos de Pesquisa Avançada).
Por volta de 1967, Lawrence Roberts publicou a ARPAnet (a precursora da grande rede mundial, a internet.). Os primeiros comutadores de pacotes ficaram conhecidos como IMPs (interface message processors), processadores de mensagens de interface, sendo fabricados pela empresa BBN.
Em 1969 o primeiro IMP foi instalado na Universidade da Califórnia com três IMPs adicionais, depois no Stanford Research Institute, em Santa Bárbara e na Universidade de Utah, todos supervisionados por Leonard Kleinrock (figura 1), sendo a primeira utilização um login remoto entre a Universidade da Califórnia com o Research Institute que acabou derrubando o sistema então com 4 nós. Por volta de 1972 a ARPAnet já tinha 15 nós e foi publicamente apresentada por Robert Kahn na Conferência Internacional de Computadores. O primeiro protocolo de controle de rede deste sistema foi o NCP (network-control protocol), sendo elaborado também o primeiro programa de e-mail por Ray Tomlinson na BBN. Devido a ARPAnetser única na época era uma rede fechada e para se comunicar com suas máquinas era preciso estar ligado a um de seus IMPs.
Período entre 1972 a 1980, surgiram outras redes como ALOHAnet, TELENET e a TAYMNET / TRANSPAC. O número de pequenas redes crescia cada vês mais sendo apresentado por Robert Metcalfe os princípios de uma rede local, uma ETHERNET Que mais tarde originariam LANs de curta distância. 
O trabalho pioneiro da interconexão de redes foi supervisionado pela DARPA (Agência de Projetos de Pesquisa Avançada de Defesa), por Vinton Cerf e Robert Kahn, criando uma arquitetura, uma rede de redes baseados na criação de um protocolo, o TCP (transmission control protocol) responsável pela entrega seqüencial e confiável de pacotes. Com o tempo o serviço deste foi modificado devido à procura de um controle maior do fluxo de informações, sendo então dividido o protocolo TCP, ficando responsável somente pela organização na chegada dos pacotes, retirando a função do envio de pacotes, destinando essa ao protocolo IP e criando outro protocolo o UDP que ficou responsável pelo controle do fluxo de voz nos pacotes. 
Além das pesquisas realizadas pela DARPA, no Havaí Norman Abramson com a rede Aloha desenvolveu um protocolo, o ALOHA que permitiu o compartilhamento de informações com um único meio de comunicação através de ondas eletromagnéticas, com frequência de rádio (broadcast) em diferentes localizações geográficas. Este protocolo de múltiplo acesso foi aprimorado por Metcalfe e Boggs desenvolvendo a Ethernet para redes compartilhadas com fios.
De 1980 – 1990, aproximadamente 200 máquinas estavam conectadas a ARPAnet não só devido a pesquisas, mas também por ser utilizada para comunicação militar na Guerra Fria onde toda a comunicação passava por um computador central que se encontrava no Pentágono, ao passar esta época de guerra a Arpanet não tinha mais importância para os militares sendo passada então para maioria das universidades e outros pesquisadores que foram estendendo a comunicação por outros países chegando à década de 80 com cem mil máquinas interligadas formando uma grande rede mundial que passou a ser conhecida como Internet. 
A transferência de arquivos e o processamento de e-mails entre as universidades dos EUA eram feitas pela BITnet (rede de bits), e a comunicação com outras universidades não interligadas pela Arpanet eram feitas pela CSNET. No dia primeiro de janeiro de 1983 o protocolo TCP/IP tornou-se oficial, sendo obrigatório estar em todas as máquinas. Em 1986 surgiu o NSFNET o backbone primário que fornecia acesso a outros centros de computação. Também nesta época foi desenvolvido o DNS (Domain Name System), usado para conversão dos endereços em forma de letras e palavras, pois são de mais fácil memorização para nós, na forma de endereço IP de 32 bits, a linguagem dos computadores.
No outro lado do mundo o governo Frances desenvolvia o projeto Minitel, uma rede pública de comutação de pacotes baseada num conjunto de protocolos chamado X.25 que usava circuitos virtuais, terminais baratos e modems embutidos, porém de baixa velocidade, disponibilizava sites de listas telefônicas e outros, havia também sites particulares onde eram pagas taxas pelos usuários conforme o tempo de uso. Em 1990 a Minitel já oferecia 20 mil serviços diferentes, e já era usada por mais de 20% da população Francesa, gerando mais de 1 bilhão de dólares por ano, e 10 mil novos empregos.
Um fato interessante é que a grande rede de computadores na França já estava presente nas empresas, no comércio, nas residências 10 anos antes dos norte-americanos ouvirem falar em uma rede de computadores e menos ainda em uma desenvolvida Internet.
Período entre 1990-1996
Na década de 1990 a ARPAnet deixou de existir, a Milnet e a Rede de Dados de Defesa passaram a controlar maior parte do tráfego do Departamento de Defesa dos EUA e a NSFNET passou a ser o backbone de conexão entre os Estados Unidos e todas as redes do exterior, mas perdeu seu valor comercial em 1995, pois essa tarefa passou a ser encargo dos provedores de Internet.
O destaque da década de 90 foi o funcionamento da World Wide Web, nos lares e empresas de milhões de pessoas espalhadas por todo mundo, para fins comerciais, bancários, empresariais, educacionais e para própria diversão. A Web foi inventada no Cern (Centro Europeu para Física Nuclear) por Tim Berners Lee no período de 1989 a 1991, baseados em trabalhos realizados por Bush e Ted Nelson respectivamente nas décadas de 40 e 60. Berners Lee e seus companheiros desenvolveram versões iniciais de HTML, HTTP, um servidor web e um Browser. 
O Brasil entrou na rede em 1990 criando a RNP (rede nacional de pesquisas). Em 1992 foi criada a Internet Society e já existiam 200 servidores web em operação, nesta época as pesquisas estavam mais voltadas para o desenvolvimento de browsers com interface gráfica, por exemplo, Marx Andreesen com a versão beta do GUIMosaic em 1993 e James Baker com a Mosaic Communications em 1994 que mais tarde transformou-se na Netscape Communications Corporation. Também nesta época a Embratel disponibilizou o acesso à rede de empresas e usuários particulares.
Em 1995 os estudantes usavam diariamente os browsers Mosaic e Netscape para navegar, e pequenas e grandes empresas começaram a utilizá-los para transações comerciais, já existindo 10 milhões de servidores. 
Em 1996 a Microsoft entrou com tudo na web com o browser Internet Explorer. Como o desenvolvimento avançava a cada dia, iniciaram pesquisas por roteadores e roteamento de alta velocidade para redes locais. e recursos como o comércio eletrônico e textos, imagens, multimídia e outros.
 3.2. Protocolo TCP/IP e Sockets
 3.2.1 O que é rede de computador?
 Uma rede de computadores é um grupo de sistemas de computadores e outros dispositivos de hardware de computação que estão ligados entre si através de canais de comunicação para facilitar a comunicação e o compartilhamento de recursos entre uma ampla gama de usuários. Redes são geralmente classificadas com base em suas características.
 3.2.2 Tipos.
 Dentre todas as redes existentes, os tipos de redes mais conhecidas são:
· Redes de Área Local (LAN);
· Redes de área pessoal (PAN);
· Início da área de Networks (HAN);
· Wide Area Networks (WAN);
· Redes de campus;
· Metropolitan Area Networks (MAN);
· Enterprise Networks privados;
· Internetworks;
· Redes Backbone (BBN);
· Redes globais (GAN);
· A Internet.
 3.2.3 Modelo de Referência.
 O Modelo de Referência TCP/IP (Transmission Control Protocol/Internet Protocol – Protocolo de Controle de Transmissão/Protocolo de Internet) é o modelo conceitual de rede que reúne um conjunto de protocolos. Ele foi desenvolvido pela DARPA na década de 60 para comunicação e compartilhamento de recursos entre computadores. Assim como o modelo de referência OSI, o modelo TCP/IP fornece diretrizes gerais para projetar e implementar protocolos de rede.
Ele oferece alguns benefícios como:
· Padronização – protocolo roteável que é o mais completo e aceito atualmente
· Interconectividade – permite se conectar com sistemas não similares como FTP e Telnet para acessar e transferir dados.
· Roteamento – permite que tecnologias mais antigas e novas se conectarem, como o protocolo P2P (point to point) permitindo conexão com linha discada ou dedicada. Trabalha como os mecanismos IPCs e interfaces mais utilizados pelos sistemas operacionais, como sockets do Windows e NetBIOS.
· Internet – A partir desse protocolo TCP/IP que podemos acessar a internet. 
 O TCP/IP foi usado na ARPANET e, mais tarde, em sua sucessora, a internet. A ARPANET era uma rede de pesquisa patrocinada pelo Departamento de Defesa nos Estados Unidos. Ela conectava universidades e instalações governamentais usando linhas telefônicas.
 Diferente do OSI, o TCP/IP estabelece um modelo de quatro camadas. Essas camadas descrevem diferentes funções de rede e possuem seus próprios padrões e protocolos. São elas:
1 – Camada de Interface;
2 – Camada de Internet/Rede;
3– Camada de Transporte;
4 – Camada de Aplicação.
 3.2.4 Camada de aplicação.
É com esta camada que nós, usuários, temos mais contato, já que funciona como uma porta de entrada da rede, dando o acesso aos serviços dessa rede.
Ela é utilizada pelos softwares que costumamos usar, como aplicativos de mensagens instantâneas, servidores de e-mails, browser etc., sendo a interface direta para inserir ou receber dados.
A unidade aqui são os dados, e alguns protocolos de aplicação são HTTP, SMTP e FTP.
 3.2.5 Camada de transporte.
Esta camada detecta e elimina erros das camadas anteriores. Além disso, controla o fluxo de dados da origem ao destino, ordenando-os.
A camada de transporte garante a confiança do pacote, o qual chegará na máquina com todos os dados necessários, sem perdas, erros ou duplicações, além de obedecerem a uma sequência.
A unidade aqui é o segmento, e os protocolos de transporte são o TCP e o UDP
 3.2.6 Camada de interface.
Esta é a camada de base da arquitetura TCP/IP, correspondente às camadas de enlace de dados e física do OSI, onde ocorre a conexão básica do host com a rede por meio de algum protocolo capaz de enviar pacotes IP. É por meio desta camada que é possível transmitir dados a outros computadores dentro de uma mesma rede física, além de realizar o envio do datagrama recebido pela camada de internet através de meios físicos.
 3.2.7 Camada de internet.
A camada de internet é um grupo de métodos de interligação de redes, protocolos e especificações no conjunto de protocolos de internet que são usados para transportar pacotes de rede do hospedeiro original através dos limites de rede; se necessário, para o destino de origem do hospedeiro, especificado pelo endereço IP.
Possuí três funções básicas:
· Para pacotes de saída, seleciona o próximo hospedeiro next-hop (gateway) e transmite o pacote para o hospedeiro passando-o para a implementação da camada de link de dados.
· Para pacotes de entrada, captura os pacotes e passa a carga útil do pacote para o protocolo da camada de transporte apropriado, se apropriado.
· Fornece detecção de erros e capacidade de diagnósticos.
 3.2.8 Sockets.
O Soquete de rede é uma estrutura de software dentro de uma rede de computadores que serve como ponto final para enviar e receber dados através da rede. As estruturas e propriedades de um Soquete são definidas por uma API (Interface de Programação de Aplicativos) que geralmente são baseados no padrão Soquetes de Berkeley.
Os "sockets" de Berkeley são uma API genérica para programação sobre protocolos de comunicação. A implementação das system-calls desta interface é "standard" em todos os sistemas operativos UNIX e estende-se também a muitas outras plataformas
Geralmente é implementado como uma biblioteca de módulos vinculáveis. Originou-se com o sistema operacional 4.2BSD Unix, lançado em 1983.
Soquetes são utilizados geralmente em aplicações cliente servidor. Um soquete de rede pode ser definido como a combinação de: endereço IP e um número de uma porta de protocolo de transporte (TCP ou UDP).
Existem 2 principais tipos de soquetes de rede disponível:
· Soquete de Datagrama
· Soquete de Fluxo 
Soquete de Datagrama: Soquetes de Datagrama utiliza o padrão UDP em que não é necessária uma conexão direta com quem irá receber os dados. Isso faz com que os pacotes transmitidos não possuem a mesma confiabilidade comparando com o padrão TCP.
Soquete de Fluxo: Soquetes de Fluxo utiliza o padrão TCP requer que uma conexão seja feita entre o cliente e servidor, esta conexão transmite um fluxo de dados com confiabilidade até o seu destino.
 3.3. Cliente/Servidor
	Arquitetura cliente-servidor ou modelo cliente-servidor é uma arquitetura na qual o processamento da informação é dividido em módulos ou processos distintos. Existe um processo que é responsável pela manutenção da informação (servidores) e outro responsável pela obtenção dos dados (os clientes). 
Os clientes solicitam um determinado serviço, através do envio de uma mensagem ao servidor. Enquanto o processo servidor está trabalhando a solicitação, o cliente está livre para realizar outras tarefas. 
Já o servidor oferece serviços a processos usuários, ou seja, executam a tarefa solicitada e enviam uma resposta ao cliente que se traduz nos dados solicitados.
Geralmente os clientes e servidores comunicam através de uma rede de computadores em computadores distintos, mas tanto o cliente quanto o servidor podem residir no mesmo computador.
Um servidor é um host que está executando um ou mais serviços ou programas que compartilham recursos com os clientes. Um cliente não compartilha qualquer de seus recursos, mas solicita um conteúdo ou função do servidor. Os clientes iniciam sessões de comunicação com os servidores que aguardam requisições de entrada.
 Figura 4: Funcionamento de uma relação Cliente/Servidor Fonte: ctrlzeta.com.br/arquitetura-cliente-servidor
 3.4. Banco de dados
O que é um software de banco de dados?
O software de banco de dados é usado para criar, editar e manter arquivos e registros de banco de dados, facilitando a criação de arquivos e registros, entrada de dados, edição, atualização e relatórios de dados. O software também processa armazenamento de dados, backup e relatórios, controle multi acesso e segurança. A segurança forte do banco de dados é especialmente importante hoje, porque o roubo de dados se torna mais frequente. O software de banco de dados às vezes também é conhecido como "sistema de gerenciamento de banco de dados" (DBMS).
O software de banco de dados simplifica o gerenciamento de dados, permitindo que os usuários armazenem dados em um formulário estruturado e depois os acessem. Ele normalmente tem uma interface gráfica para ajudar a criar e gerenciar os dados e, em alguns casos, os usuários podem construir os próprios bancos de dados usando o software do banco de dados.
O que é um sistema de gerenciamento de banco de dados (DBMS)?
Um banco de dados normalmente requer um programa abrangente de banco de dados, conhecido como sistema de gerenciamento de banco de dados (DBMS). Um DBMS serve como uma interface entre o banco de dados e seus usuários finais ou programas, permitindo que os usuários recuperem, atualizem e gerenciem como as informações são organizadas e otimizadas. Um DBMS também facilita a supervisão e o controle de bancos de dados, permitindo uma variedade de operações administrativas, como monitoramento de desempenho, ajuste e backup e recuperação.
Alguns exemplos de softwares de bancos de dados populares ou DBMSs incluem MySQL, Microsoft Access, Microsoft SQL Server, FileMaker Pro, Oracle Database e dBASE.
Tipos de bancos de dados
Existem muitos tipos diferentes de bancos de dados.
O melhor banco de dados para uma organização específica depende de como a organização pretende usar os dados.
Vamos relatar com um exemplo o tipo de Banco de Dados relacional.
Bancos de dados relacionais: Os bancos de dados relacionais se tornaram dominantes na década de 1980. Os itens em um banco de dados relacional são organizados como um conjunto de tabelas com colunas e linhas. A tecnologia de banco de dados relacional fornece a maneira mais eficiente e flexível de acessar informações estruturadas.
 Figura 5: Diagrama Entidade Relacionamento (DER)
 3.5. Java
Java é uma linguagem orientada a objetos e é baseada em classes. Foi criada inspirada na linguagem C, hoje em dia é uma das linguagens mais utilizadas no mundo para desenvolvimento web, criação de programas e até mesmo de jogos.
A produção do Java funciona com o compilador gerando bytecodes, que deverão ser executados pela máquina virtual, conhecida pela sigla em inglês “JVM” (Java Virtual Machine). A JVM se trata de um programa que serve para interpretar os bytecodes e executá-los.
A portabilidade da linguagem é uma de suas principais vantagens, já que mesmo o programa sendo criado em plataforma Windows, poderá ser executado em várias outras plataformas, como Linux, Mac e até mesmo em celulares.Desde que a plataforma em que deseja executar o programa, tenha instalado o compilador Java, que é conhecido como “JDK” (Java SE Development Kit).
Estruturalmente, Java possui vários pacotes que servem para organizar as classes da aplicação, em um programa podem conter vários pacotes. As classes são elementos da aplicação Java que são utilizadas para representar os objetos. E dentro das classes ainda temos os atributos que representam as características de tal objeto (Características como: nome, idade, cor dos olhos, peso...), e os métodos que servem para representar o comportamento dos objetos, como por exemplo, o comportamento de responder as perguntas do tipo: Qual é o seu nome? Qual é sua idade? Qual é o seu peso? E entre outras.
Ainda falando da estrutura da linguagem, existem várias informações que nem todas as linguagens possuem. Na estrutura da aplicação ao nomear pacotes, eles devem ser nomeados com todas as letras minúsculas, exemplo: java.util. Já para a criação de uma classe, as iniciais de cada palavra contida no nome devem ser maiúsculas, por exemplo: MinhaClasse. E por último temos os métodos, que devem ser nomeados com a primeira letra minúscula, e as outras iniciais de cada palavra deverá ser maiúscula como nas classes, por exemplo: correrRapido();
3.5.1 INTERDISCIPLINARIDADE
Esse trabalho além de nos incentivar a buscar conhecimentos através de vastas pesquisas, nos incentiva também a conhecer um assunto que alguns de nós ainda não tinha conhecimento. 
Após muitas pesquisas acerca do tema, muito conhecimento pode ser absorvido, o trabalho conteve assuntos que ainda não foram passados em sala de aula, sendo um desafio para cada um. 
É notável que o trabalho apresenta várias vertentes, uma gana enorme de assuntos a explorar, muitas curiosidades surgiram após essa experiência. 
Este trabalho, envolveu diversas disciplinas, desde aquelas estudadas nos semestres anteriores, até as que estudamos durante este semestre. Aplicamos na prática os conceitos estudados em sala de aula, e entendemos o porquê de termos estas disciplinas na grade curricular. 
As disciplinas de Interpretação e Produção de Textos e Comunicação e Expressão foram bem utilizadas. Os conceitos e técnicas estudados, principalmente sobre textos argumentativos, a intertextualidade e a resenha, foram de grande importância para conseguirmos dissertar neste trabalho de forma clara e objetiva, além de permitir uma melhor elaboração dos textos que foram utilizados no programa. 
Lógica Matemática, Circuitos Lógicos e Lógica de Programação, Algoritmos e Estrutura de Dados, estavam presentes na construção do algoritmo, conceitos estudados nestas matérias foram aplicados na construção do programa. 
Por último, mas não menos importante, estão as matérias de Linguagens de Orientada a Objeto e Aplicação Linguagem De Programação Orientada a Objetos. Sendo as mais utilizadas na elaboração do código do programa. Todos os conhecimentos e técnicas estudados em sala e laboratório, foram aplicados, desde os conceitos e comandos. 
3.6. Tecnologias empregadas
 3.6.1. Gerenciador de banco de dados MySQL
 O MySQL é um sistema de gerenciamento de banco de dados, que utiliza a linguagem SQL como interface. É atualmente um dos sistemas de gerenciamento de bancos de dados mais populares da Oracle Corporation, com mais de 10 milhões de instalações pelo mundo.
 Características
Portabilidade (suporta praticamente qualquer plataforma atual);
Compatibilidade (existem drivers ODBC, JDBC e .NET e módulos de interface para diversas linguagens de programação, como Delphi, Java, C/C++, C#, Visual Basic, Python, Perl, PHP, ASP e Ruby)
Excelente desempenho e estabilidade;
Pouco exigente quanto a recursos de novos hardwares;
Facilidade no manuseio;
É um Software Livre com base na GPL (entretanto, se o programa que acessar o Mysql não for GPL, uma licença comercial deverá ser adquirida);
Contempla a utilização de vários Storage Engines como MyISAM, InnoDB, Falcon, BDB, Archive, Federated, CSV, Solid…
Suporta controle transacional;
Suporta Triggers;
Suporta Cursors (Non-Scrollable e Non-Updatable);
Suporta Stored Procedures e Functions;
Replicação facilmente configurável;
Interfaces gráficas (MySQL Toolkit) de fácil utilização cedidos pela MySQL Inc.
3.6.2. Java Swing
 Swing é um widget toolkit GUI para uso com o Java. Ele é compatível com o Abstract Window Toolkit. A API Swing procura renderizar/desenhar por conta própria todos os componentes, ao invés de delegar essa tarefa ao sistema operacional, como a maioria das outras APIs de interface gráfica trabalham.
 Por ser uma API de mais alto nível, ou seja, mais abstração, menor aproximação das APIs do sistema operacional, ela tem bem menos performance que outras APIs gráficas e consome mais memória RAM em geral. Porém, ela é bem mais completa, e os programas que usam Swing têm uma aparência muito parecida, independente do Sistema Operacional utilizado
3.6.3. Java Hibernate
 O Hibernate é um framework para o mapeamento objeto-relacional escrito na linguagem Java, mas também é disponível em .Net com 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.
 Características
	O objetivo do Hibernate é diminuir a complexidade entre os programas Java, baseado no modelo orientado a objeto, que precisam trabalhar com um banco de dados do modelo relacional (presente na maioria dos SGBDs). Em especial, no desenvolvimento de consultas e atualizações dos dados.
	Sua principal característica é a transformação das classes em Java para tabelas de dados (e dos tipos de dados Java para os da SQL). O Hibernate gera as chamadas SQL e libera o desenvolvedor do trabalho manual da conversão dos dados resultante, mantendo o programa portável para quaisquer bancos de dados SQL, porém causando um pequeno aumento no tempo de execução.
Nas questões relacionadas para o gerenciamento de transações e na tecnologia de acesso à base de dados são de responsabilidade de outros elementos na infraestrutura do programa. Apesar de existirem API no Hibernate para possuir operações de controle transacional, ele simplesmente delegará estas funções para a infraestrutura na qual foi instalada.
4. Projeto (Estrutura do Programa)
 Modelos de Banco de Dados
 Modelo Lógico:
 Captura de tela: 1 Modelo Lógico
 Modelo Conceitual:
 Captura de tela: 2 Modelo Conceitual
Diagrama Arquitetura Cliente Servidor
Captura de tela: 3 Arquitetura Cliente - Servidor
Diagrama Casos de Uso
Captura de tela: 4 Diagrama de Casos de Uso
 4.1. Protótipo de Telas
 Tela ChatCaptura de tela: 5 Interface do chat na visão do cliente
Descrição: 
1 – Aba dos usuários
2 – Nome do usuário atual
3 – Mensagens enviadas
4 – Abas de conversas
5 – Campo para inserção de mensagens
6 – Botão para enviar a mensagem na aba atual
7 – Botão para enviar a mensagem para todos os usuários adicionados
 Foi decidido deixar o tema para o cliente escuro, visando o conforto do usuário ao utilizar o programa por grandes quantias de horas.
Menu Conexão
Captura de tela: 6 Menu Conexão
O menu de conexão está localizado ao canto superior esquerdo e é composto de apenas dois botões, sendo eles:
Conectar: Conecta o cliente ao servidor
Desconectar: Interrompe a conexão com o servidor
Tela Servidor
Captura de tela: 7 Tela Servidor
Descrição: 
1 – Inserção de novo usuário
2 – Edição dos usuários
3 – Deletar usuários
4 – Exibição de mensagens enviadas
5 – Identificação dos usuários
6 – Nome do usuário
7 – Senha dos usuários
 A tela Servidor foi pensada em ser utilizada com o tema claro e uma interface mais minimalista, focada em mais eficiencia e simplicidade.
4.2. Módulos 
Os módulos foram separados em três partes, sendo elas:
Desenvolver um Serviço Java Sockets paraa aplicação Servidor responsável receber as mensagens de usuários conectados, armazenar no banco de dados e as encaminharem ao seu destinatário.
Desenvolver um método para a aplicação Cliente conseguir enviar e receber mensagens utilizando as interfaces visuais.
Desenvolver um método para a aplicação Cliente conseguir receber enviar e receber mensagens do Servidor utilizando o Java Sockets.
5. Desenvolvimento
Figura 6: Planilha com o plano de cronograma do projeto
6. Ficha da APS
5. Relatório de linhas de código
Script de Criação do banco de dados:
CREATE DATABASE chataps;
USE chataps;
CREATE TABLE Cargo (
IdCargo INTEGER PRIMARY KEY AUTO_INCREMENT,
Cargo VARCHAR(100) NOT NULL
);
CREATE TABLE UsuarioBD(
IdUsuario INTEGER PRIMARY KEY AUTO_INCREMENT,
Usuario VARCHAR(80)NOT NULL,
Senha VARCHAR(10),
Nome VARCHAR(100),
Cpf VARCHAR(15),
Telefone VARCHAR(20),
Email VARCHAR(100),
Pais VARCHAR(50),
Estado CHAR(2),
Cidade VARCHAR(50),
Rua VARCHAR(80),
Numero VARCHAR(10),
IdCargo INTEGER,
FOREIGN KEY(IdCargo) REFERENCES Cargo (IdCargo)
);
CREATE TABLE MensagemBD(
IdMensagem INTEGER PRIMARY KEY AUTO_INCREMENT,
Mensagem VARCHAR(1000),
DataHora DATETIME,
Usuario_IdRementente INTEGER,
Usuario_IdDestinatario INTEGER,
FOREIGN KEY(Usuario_IdRementente) REFERENCES UsuarioBD (IdUsuario),
FOREIGN KEY(Usuario_IdDestinatario) REFERENCES UsuarioBD (IdUsuario)
);
Estrutura aplicação Servidor:
 
Pacote aplicacao
Classe Servidor.java
Pacote aplicacao.dao
Classe ServidorDAO
Pacote aplicacao.gui
Classe FrameCadastroCliente.java
Classe FrameCadastroMensagem.java
Classe FrameMensagem.java
Classe FramePropriedade.java
Classe ServidorFrame.java
Pacote aplicacao.model
Classe TableModelUsuario.java
Classe TableModelUsuarios.java
Classe UsuarioListModel.java
Pacote aplicacao.model.editorrender.java
Pacote aplicacao.servidor
Classe ServidorServico.java
Pacote aplicacao.servidor.bean
Classe Cargo.java
Classe Mensagem.java
Classe MensagemBD.java
Classe Usuario.java
Classe UsuarioBD.java
Estrutura aplicação Cliente:
Pacote aplicacao
Classe Cliente.java
Classe ClienteFrame.java
Classe FrameCadastroInput.java
ClasseJFrameBackground.java
Classe JTabbedChat.java
Pacote aplicacao.model
Classe MensagemTableModel.java
Classe UsuarioListModel.java
Pacote aplicacao.servidor
Classe ClienteServico.java
Classe DadosConexão.java
Pacote aplicacao.servidor.bean
Classe Mensagem.java
Classe Usuario.java

Continue navegando