Buscar

APS 3 e 4 Semestre Sistemas de informacao - Meio ambiente

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 46 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 46 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 46 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

DESENVOLVIMENTO DE SOFTWARE UTILIZANDO CONCEITOS DE 
PROGRAMAÇÃO ORIENTADA A OBJETOS
Felipe Silva C2011D-9
Sistemas de Informação 1º Semestre - Junho 2019
SUMÁRIO
1.	OBJETIVO	1
2.	INTRODUÇÃO	2
3.	LINGUAGEM DE PROGRAMAÇÃO ORIENTADA A OBJETO	4
3.1	CLASSE	5
3.2	OBJETO	5
3.2.1	Características do Objeto	5
3.2.2	Criando o Objeto	6
3.3	HERANÇA	6
3.3.1	Tipos de herança	6
3.4	MÉTODO	7
3.5	VANTAGENS E DESVANTAGENS DA LPOO	7
3.5.1	Vantagens	7
3.5.2	Desvantagens	8
4.	MODELAGEM E RELACIONAMENTO	9
4.1	MODELAGEM	9
4.2	RELACIONAMENTOS	11
4.2.1	Relacionamentos entre objetos	11
5. POLUIÇÃO	12
5.1. POLUIÇÃO DO AR	12
 5.2. GASES POLUENTES	13
 5.2.1. Dióxido de Carbono	14
6. PROJETO DO PROGRAMA	15
7.	TECNOLOGIAS UTILIZADAS	19
7.1	SWING	19
7.1.1	Conectando os Elementos	20
7.2	JDBC	22
8.	DESCRIÇÃO DAS CLASSES	24
8.1	Conexão	24
8.2	CarroDao	25
8.3	Carros	25
8.4	Principal	26
8.5	JFFormulario	27
9.	LINHAS DE CÓDIGO	28
9.1	Conexao.java	28
9.2	CarroDao.java	28
9.3	Carro.java	29
9.4	Principal.java	30
9.5	JFFormulario.java	31
10.	CONCLUSÃO	36
11.	REFERÊNCIAS BIBLIOGRÁFICAS	41
12.	FICHAS APS	44
1. OBJETIVO
Neste trabalho procurei expor ao máximo tudo que encontrei a respeito do tema “Desenvolvimento de Software utilizando conceitos de Programação Orientada a Objetos” que foi proposto como Atividade Prática Supervisionada no 3º semestre do curso de Sistemas de Informação, e mesmo que de uma forma simples, me expressei por completo dentro do que entendo a respeito do assunto.
	Foi proposto a criação de um software utilizando da Linguagem de Programação Orientada a Objetos, sendo que esse software deveria gerar propostas de benefícios quanto às práticas cidadãs ligadas ao meio ambiente, algo que não necessariamente solucionasse o problema como um todo, mas auxiliasse a diminuição do mesmo. Desta forma escolhi a poluição como tema, mais especificamente a poluição do ar, gerado em sua maioria pelos veículos que diariamente saem às ruas e despejam toneladas de gases poluentes da atmosfera. Procurei alguma forma de conscientizar e propor ao condutor uma maneira de manter a manutenção de seu veículo em dia para assim, reduzir a emissão de gases nocivos ao ambiente.
O programa tem em sua codificação o consumo médio geral das marcas mais conhecidas e vendidas no país, de acordo com o motor, assim quando o usuário selecionar o motor de seu veículo, o tipo de combustível utilizado e digitar seu consumo médio, o software compara com a média das marcas e avalia se o veículo está ou não dentro das especificações de fábrica, assim, o mesmo sabe ou não se deve recorrer à manutenção do seu veículo para de alguma forma se manter em dia com o ambiente. Caso o condutor não saiba o consumo médio de seu carro é possível realizar essa conta, basta colocar distância percorrida e litros utilizados nesse percurso, agora utilize o resultado que é o consumo médio. 
Conceitos gerais foram explicados, como os da Linguagem de Programação Orientada a Objeto, a modelagem e os relacionamentos, o Netbeans que usamos para criar a interface gráfica do software, conceitos e dados utilizados no ramo automobilístico. Foram realizadas pesquisas mais específicas, onde detalhamos cada um dos temas para um melhor entendimento do trabalho.
2. INTRODUÇÃO
Quando o tema é poluição algo de muito importante para a história mundial nos vem à cabeça, Revolução Industrial, que trouxe consigo a urbanização e a industrialização, a verdadeira poluição, com a queima do carvão mineral para gerar energia às indústrias, que consequentemente despejavam toneladas de poluentes na atmosfera. Um “progresso” não tão bom como imaginávamos.
Poluição refere-se à degradação do meio ambiente por fatores prejudiciais a ele. Esses fatores podem ser sonoros, térmicos, atmosféricos ou emissão de gases poluentes, elementos esses que prejudicam o funcionamento dos ecossistemas, além de também prejudicar o homem com este tipo de ação, uma vez que o mesmo depende muito dos recursos hídricos, do ar e do solo para sobreviver com qualidade de vida e saúde. Sem dúvidas, nos dias atuais a poluição do ar é uma das que mais prejudica o ser humano e o ambiente, traz danos à nossa saúde, além de causar o efeito estufa, que se agrava a cada dia. Estudos relatam que a contínua emissão de tantos gases poluentes pode aumentar a temperatura do planeta, tão rápido, que em alguns anos teremos problemas muitos mais sérios do que os que já nos deparamos atualmente. Para que consigamos garantir um futuro digno ao nosso planeta e, consequentemente, às gerações futuras, devemos repensar nossa forma de nos relacionarmos com o mundo. Hoje, quase todas as grandes cidades do mundo sofrem com o problema de poluição, mas muitas têm procurado soluções para estes problemas. A tecnologia tem ajudado quanto à criação de novas máquinas e combustíveis menos poluentes ou até que não gerem poluição alguma, além de muitas outras pesquisas que de alguma forma procuram diminuir esse problema que vem principalmente da queima de combustíveis fósseis como o carvão mineral, o diesel, a gasolina, até mesmo os combustíveis naturais como o álcool, que polui em menor quantidade, mas ainda assim polui. A queima destes combustíveis lança uma grande quantidade de gases poluentes na atmosfera produzidos em sua maioria por carros, motos, aviões, fábricas, queimadas de florestas, etc. Dentre os gases, encontramos em maior quantidade: o Dióxido de Enxofre, Dióxido de Azoto, Monóxido de Carbono, Dióxido de nitrogênio, Dióxido de Carbono, dentre outros. Testes com o hidrogênio mostram que possivelmente no futuro os carros poderão andar com um combustível que lança apenas vapor de água na atmosfera, o que reduziria pelo menos centenas dos milhares elementos poluentes que existem, mas enquanto nada disso é utilizado podemos prevenir, de certa forma, a emissão descontrolada desses gases por veículos.
O Dióxido de Carbono (CO²), por exemplo, conhecido como Gás Carbônico, é produzido na queima de combustíveis fósseis, como a gasolina, é lançado diariamente na atmosfera. Durante anos a concentração de CO² tem aumentado, passou de 280 ppm (partes por milhão) no ano de 1750, para os 393 ppm atuais, representando um aumento de aproximadamente 40%, com esse aumento o dióxido de carbono se tornou um dos grandes vilões do efeito estufa. Quando se fala em quantidade, anualmente cerca de 2.650 bilhões de toneladas de dióxido de carbono são lançadas na atmosfera. Como o tempo médio de permanência do CO² na atmosfera é de cerca de cem anos, a estabilização ou mesmo a diminuição do teor atmosférico desse gás requer diminuição significativa em sua emissão. Se essa quantidade continuar aumentando, acredita-se que ocasionará uma série de problemas na Terra. Sabe-se que ninguém quer isso para o futuro de sua família, todos querem manter uma vida saudável sem tantos riscos à saúde, e isso depende de nós para acontecer.
	Desta forma, decidimos conscientizar e motivar os condutores à cuidarem do planeta, de uma forma simples e eficaz. É fato que hoje a maior parte da poluição atmosférica é causada pelos veículos, ainda mais aqueles que não são levados à manutenção com certa frequência. Assim, foi criado aqui, um software para verificar o consumo do automóvel e alertar aos usuários se seus carros precisam ou não de reparos para se adequar às especificações dos fabricantes e assim emitir a menor quantidade possível de gases poluentes na atmosfera.
3. LINGUAGEM DE PROGRAMAÇÃO ORIENTADA A OBJETO
	A Linguagem de Programação Orientada a Objeto foi criada para tentar aproximar o mundo real do mundo virtual, ajudar na organização e resolver muitos problemas enfrentados pela programação, é um paradigma de análise, projeto e programação de sistemas de software baseado na composição e interação entre diversas unidades de software chamadas de objetos.
	Objetos são instâncias de classes, que determinam qual a informação um objeto contém e como ele pode manipulá-la, é um elemento que representa, no domínio da solução, alguma entidade (abstrata ou concreta)do domínio de interesse do problema sobre análise. Esses objetos são agrupados em classes.
	Sob o ponto de vista da programação orientada a objeto, um objeto não é muito diferente de uma variável normal. Essa variável tem:
· Um espaço em memória para registrar o seu estado, ou seja, valor;
· Um conjunto de operações que podem ser aplicadas a ela, através dos operadores.
As técnicas de programação orientada a objeto recomendam que a estrutura de um objeto e a implementação de seus métodos deve ser tão privativa quanto possível.
A programação orientada a objetos baseia-se nos seguintes conceitos:
· Classes
· Objetos
· Herança
3.1 CLASSE
Uma classe é um gabarito para a definição de objeto. Através da definição da classe, descrevemos um grupo de objetos como o comportamento (caracteriza-se por ser o único meio de acessar, manipular e modificar os atributos de um objeto), atributos (características de uma classe, não representam comportamento, eles definem a estrutura da classe) e relacionamentos com outros objetos.
Enquanto um objeto individual é uma entidade concreta que executa algum papel no sistema, uma classe captura a estrutura e comportamento comum a todos os objetos que estão relacionados.
Classes não são diretamente suportadas em todas as linguagens, e são necessárias para que uma linguagem seja orientada a objeto.
3.2 OBJETO
	As entidades identificadas no domínio devem ser representadas de alguma forma dentro da aplicação correspondente. Nas aplicações orientadas a objeto, as entidades são representadas por objetos.
	Exemplos:
· Entidade Física: caminhão, carro, bicicleta, etc.
· Entidade Conceitual: processo químico, matrícula, etc.
· Entidade de Software: lista encadeada, arquivo, etc.
Podemos afirmar que um objeto é um conceito, abstração, ou entidade com os limites bem definidos e um significado para a aplicação.
3.2.1 Características do Objeto
 Os dados de um objeto são totalmente escondidos e protegidos de outros objetos, a única maneira de acessá-los é através da invocação de uma operação declarada na interface pública do objeto. Essa interface consiste no conjunto de operações que um cliente do objeto pode acessar.
Variáveis representando o estado interno do objeto são chamadas variáveis de instância ou atributos. 
Formalmente, um objeto é algo que possui:
· Um estado, que normalmente implementa através de um conjunto de propriedades(dominadas atributos).
· Uma identidade única. Identidade é a propriedade de um objeto que o distingue de outros objetos. A identidade não é o nome do objeto, nem o endereço de memória onde ele está armazenado.
· Um comportamento. O comportamento define como um objeto reage às requisições de outros objetos.
Um objeto possui um estado, exibe um comportamento bem definido e possui uma entidade única. 
3.2.2 	Criando o Objeto
	Para criar um objeto temos que escrever uma instrução especial que possa ser distinta dependendo da linguagem de programação que se empregue, mas será algo parecido com isto: meuCarro = new Carro().
Com a palavra new especificamos a necessidade de criação de uma instância de classe que continua a seguir. Dentro dos parênteses poderíamos colocar parâmetros com os quais se inicia o objeto da classe.
3.3 HERANÇA
É um mecanismo que existe para permitir a reutilização da estrutura e do comportamento de uma classe ao se definir novas classes, uma vez que o código definido na superclasse pode ser utilizado automaticamente na subclasse. A herança também é conhecida como relacionamento “é – um”. Através dela é possível representar a relação de generalização/ especialização entre duas classes.
A classe que herda o comportamento é chamada de subclasse e a que definiu o comportamento superclasse.
3.3.1 	Tipos de herança
· Herança estrita: as subclasses podem redefinir ou excluir propriedades herdadas da superclasse.
· Herança não estrita: as mudanças acima (redefinir e excluir) não são permitidas.
· Herança múltipla: é a possibilidade de se definir uma subclasse com mais de uma superclasse.
3.4 MÉTODO
Na LPOO o método nada mais é do que as funcionalidades da classe, ou seja, o que será possível fazer com o objeto dessa classe. Cada método é especificado por uma assinatura, ou seja, o nome do método. Para que sejam possíveis dois métodos de uma classe ter o mesmo nome, é feito um mecanismo de sobrecarga, isso gera conflito, pois o compilador é capaz de detectar qual método deve ser escolhido a partir da análise dos tipos de argumentos do método.
3.5 VANTAGENS E DESVANTAGENS DA LPOO
3.5.1 Vantagens
	Orientação a objetos ajuda muito em organização e menos escrita, além de concentrar as responsabilidades nos pontos certos, flexibilizando sua aplicação, como:
· Encapsulamento: é o princípio de projeto pela qual cada componente de um
programa deve agregar toda a informação relevante para sua manipulação, ou seja, consiste na separação de aspectos internos e externos de um objeto, impedindo o acesso direto ao estado de um objeto (seus atributos). Benefícios: o código pode usar apenas a interface para a operação; A implementação do objeto pode mudar, para corrigir erros, aumentar desempenho, etc., sem que seja necessário modificar o código; A manutenção é mais fácil e menos custosa; e cria-se um programa legível e bem estruturado.
· Ocultamento de informação: é o princípio pela qual cada componente
deve manter oculta uma decisão de projeto. 
	Na orientação a objeto, o uso do encapsulamento e ocultamento da informação recomenda que a representação do estado de um objeto deve ser mantida oculta. Dessa forma, detalhes internos sobre operação do objeto não são conhecidos, permitindo que o usuário do objeto trabalhe em um nível mais alto de abstração, sem preocupação com os detalhes internos da classe.
	Outra enorme vantagem, onde se economiza linhas e linhas de código, é o polimorfismo das referencias.
· Polimorfismo: serve para que não tenhamos que nos preocupar sobre o
que estamos trabalhando, e abstraímos para definir um código que seja compatível com objetos de vários tipos. Facilita a reutilização de códigos (a orientação a objetos não garante a reutilização, ela oferece mecanismos para que isso ocorra, mas sempre será função do desenvolvedor garantir isso).
3.5.2 Desvantagens
· Complexidade no aprendizado para desenvolvedores de linguagens estruturadas;
· Dificilmente uma linguagem orientada a objetos conseguirá ter um desempenho em tempo de execução superior a linguagens não orientadas a objetos;
· Maior esforço na modelagem de um sistema O.O do que estruturado (porém menos esforço de codificação, sendo uma vantagem);
· Funcionalidades limitadas por interface, quando estas estão incompletas (problemas na modelagem);
· Dependência de funcionalidade já implementadas em superclasses no caso da herança, implementações espalhadas em classes diferentes.
4. MODELAGEM E RELACIONAMENTO
4.1 MODELAGEM
A modelagem de dados é parte integrante de um desenvolvimento de software, que utiliza técnicas predefinidas e notações convencionais. As etapas que compõem este processo correspondem ao ciclo de vida do software. Tradicionalmente, a formulação inicial do problema, a análise, o projeto, a implementação, os testes e a operação (manutenção e aperfeiçoamento) compõem estas etapas do ciclo de vida. É um modelo abstrato cuja finalidade é descrever, de maneira conceitual, os dados a serem utilizados em um sistema de informações ou que pertencem a um domínio. A principal ferramenta do modelo é sua representação gráfica, o diagrama entidade relacionamento. Normalmente o modelo e o diagrama são conhecidos por suas siglas: MER e DER.
Modelar significa criar um modelo que explique as características de funcionamento e comportamento de um software a partir do qual ele será criado, facilitando seu entendimento e seu projeto, através das características principais que evitarão erros de programação, projeto e funcionamento. É uma parte importante do desenho de um sistema de informação.
Sinteticamente, modelar os dados é uma maneira de expressar uma realidade atravésde um formalismo. Existem diversas técnicas para modelagem de dados, cada uma com ferramentas de abstração diferenciadas determinando a classe de problemas mais adequada ao seu uso.
Um modelo completo de um sistema é composto por sub-modelos que expressam visões diferentes da mesma realidade. Essas visões estão divididas em três:
1) Visão de objetos: descreve estaticamente os objetos que compõem o sistema e seus relacionamentos através de diagramas de objetos.
2) Visão dinâmica: descreve os aspectos do sistema que se modificam com o passar do tempo, especificando o controle do sistema. Os diagramas de estado são usados como ferramenta de descrição.
3) Visão funcional: descreve as transformações dos valores dos dados de um sistema. Os diagramas de fluxo de dados são usados como ferramenta de trabalho.
Cada visão descreve um aspecto do sistema, mas contém referências às outras visões. A visão de objetos descreve as estruturas de dados sobre as quais atuam as visões dinâmicas e funcionais. As operações da visão de objetos correspondem a eventos nas visões dinâmicas, e a funções na visão funcional. A visão funcional descreve as funções chamadas pelas operações da visão de objetos e pelas ações na visão dinâmica.
A abordagem que se dispensa ao assunto normalmente atende a três perspectivas:
· Modelagem Conceitual: é usada como representação de alto nível e considera exclusivamente o ponto de vista do usuário criador dos dados;
· Modelagem Lógica: agrega mais alguns detalhes de implementação.
· Modelagem Física: demonstra como os dados são fisicamente armazenados.
Quanto ao objetivo, podemos identificar as seguintes variações:
· Modelagem de dados entidade-relacionamento (leitura, construção e validação dos modelos);
· Modelagem de relacionamentos complexos, grupos de dados lógicos e ciclo de vida das entidades;
· Modelagem de dados corporativa;
· Modelagem de dados distribuídos (cliente/servidor);
· Modelagem e reengenharia de dados legados e
· Modelagem de dados para Data Warehouse.
4.2 RELACIONAMENTOS
Relacionamento é um conjunto de associações entre entidades, geralmente é representado por um losango ligado por linhas aos retângulos que representam as entidades do relacionamento. 
Na descrição de um relacionamento devem aparecer:
· Sua função;
· O que ele representa;
· Quais as regras de seu estabelecimento;
· Quais as exceções a seu estabelecimento;
· Quando ocorre;
· Quando pode deixar de existir.
Os relacionamentos que duas ou mais classes podem ter são:
· Dependência: representa-se apontando de uma classe que possui um método ou operação para a classe que é utilizada como um parâmetro para essa operação;
· Generalização: acontece quando uma das classes especializa ou detalha a outra. A classe genérica é denominada de Superclasse ou Classe Pai e a outra classe de Subclasse ou classe;
· Associação: é uma relação estrutural, ou seja, ela informa que uma classe faz parte da estrutura de outra. Exemplo: o Motor faz parte da classe Automóvel, um empregado está associado a uma empresa ou um músico está associado a uma banda. 
4.2.1 Relacionamentos entre objetos
Objetos relacionam-se uns com os outros de diversas formas:
· Um objeto motor é parte de um objeto carro;
· Um objeto turma tem vários objetos alunos;
· Um objeto botão tem um objeto tratador de eventos;
Em alguns casos, o tipo de relacionamento entre os objetos pode não ser muito claro, será necessária a interpretação para determinar o tipo de relacionamento. Em uma composição, um objeto sempre será responsável pelo ciclo de vida de outro objeto. Além disso, um relacionamento de composição representa um relacionamento mais forte quando comparado a um relacionamento de associação. Em geral, objetos que participam de um relacionamento de associação fazem mais sentido por eles mesmos quando estudados isoladamente, sem o relacionamento que os une.
5. POLUIÇÃO
Quando o tema é poluição algo de muito importante para a história mundial nos vem à cabeça, Revolução Industrial, que trouxe consigo a urbanização e a industrialização, a verdadeira poluição, com a queima do carvão mineral para gerar energia às indústrias, que consequentemente despejavam toneladas de poluentes na atmosfera. Um “progresso” não tão bom como imaginávamos.
Poluição refere-se à degradação do meio ambiente por fatores prejudiciais a ele. Esses fatores podem ser sonoros, térmicos, atmosféricos ou emissão de gases poluentes, elementos esses que prejudicam o funcionamento dos ecossistemas, além de também prejudicar o homem, uma vez que o mesmo depende muito dos recursos hídricos, do ar e do solo para sobreviver com qualidade de vida e traz danos à nossa saúde, podendo causar problemas neuropsíquicos e surdez, alterações drásticas nas taxas de natalidade e mortalidade de populações, gerando impactos na cadeia trófica, morte de rios e lagos, efeito estufa, morte por asfixia, destruição da camada de ozônio, chuvas ácidas e destruição de monumentos e acidificação do solo e da água, inversão térmica, mutações genéticas, necrose de tecidos, propagação de doenças infecciosas, dentre outras, são apenas algumas das consequências da poluição.
5.1. POLUIÇÃO DO AR
Existem na atmosfera, vários agentes poluentes eles são produzidos, principalmente, por automóveis, motocicletas, aviões, fábricas, queimadas, centrais termoelétricas, geradores movidos a combustíveis fósseis, vulcões e etc., são eles os causadores da poluição do ar. Dificilmente encontraremos todos os elementos numa mesma região, locais com grande tráfego de veículos, por exemplo, apresentam o ar com forte presença de monóxido de carbono. Nos dias de hoje, quase todas as grandes cidades mundiais sofrem com os efeitos da poluição do ar,cidades como São Paulo, Tóquio, Nova Iorque e Cidade do México estão entre as mais poluídas do mundo, mas muitas têm procurado soluções para estes problemas. A tecnologia tem ajudado quanto à criação de novas máquinas e combustíveis menos poluentes ou até que não gerem poluição alguma, além de muitas outras pesquisas que de alguma forma procuram diminuir esse problema que vem principalmente da queima de combustíveis fósseis como o carvão mineral e a gasolina. A queima destes produtos tem lançado um alto nível de monóxido e dióxido de carbono na atmosfera terrestre, estes dois combustíveis são responsáveis pela geração de energia que, alimenta os setores industrial, elétrico e de transporte. Até mesmo os combustíveis naturais como o álcool, poluem o ar, em menor quantidade, mas ainda assim polui. 
O clima do planeta também é afetado pela poluição atmosférica. O fenômeno do efeito estufa está aumentando a temperatura no planeta Terra, ele ocorre da seguinte forma: os gases poluentes formam uma camada de poluição na atmosfera, impedindo a dissipação do calor. Desta forma, o calor fica concentrado nas camadas baixas da atmosfera, provocando mudanças no clima. Muitas espécies animais poderão entrar em extinção e tufões e maremotos poderão ocorrer com mais frequência e intensidade.
Diante das notícias negativas, o homem tem procurado medidas para solucionar estes problemas ambientais. Muitos automóveis já estão utilizando gás natural como combustível, no Brasil, por exemplo, temos milhões de automóveis movidos a álcool, combustível renovável, não fóssil, que poluí pouco. Testes com o hidrogênio mostram que possivelmente no futuro os carros poderão andar com um combustível que lança apenas vapor de água na atmosfera, o que reduziria pelo menos centenas dos milhares elementos poluentes que existem, mas enquanto nada disso é utilizado podemos prevenir, de certa forma, a emissão descontrolada desses gases por veículos.
5.2. GASES POLUENTES
Dentre os gases, encontramos em maior quantidade na atmosfera:
· Dióxido de Enxofre: gás tóxico, incolor e denso. Produzido, principalmente, por vulcões, queima de diesel e em alguns processos industriais. Pode gerar a chuva ácida.
· Dióxido de Azoto: gás tóxico com cheiro forte e irritante. Produzido, principalmente, em veículos com motores a explosão e também na queimade querosene.
· Monóxido de Carbono: produzido na queima de combustíveis fósseis (gasolina, diesel) e também na combustão de madeira, carvão mineral e gás natural. É incolor (sem cor) e inodoro (não possui cheiro). 
· Dióxido de nitrogênio: formado nos processos de combustão de veículos, usinas térmicas e indústrias. Muito nocivo, participa da formação do ozônio e da chuva ácida.
· Dióxido de carbono: O Dióxido de Carbono (CO²), conhecido como Gás Carbônico, é produzido na queima de combustíveis fósseis, como a gasolina. É incolor e inodoro.
· Compostos orgânicos voláteis (metano, xileno, benzeno, butano e propano).
· Partículas sólidas finas e inaláveis (pólen, fuligem, poeira, fumaça e partículas do solo).
· Poluentes tóxicos (amianto, dioxinas, tolueno, cromo, cádmio).
· Ozônio - muito nocivo à saúde humana. É gerado a partir da reação dos raios solares com outras substâncias presentes no ar poluído (dióxido de nitrogênio, vapor de solventes e combustíveis não queimados totalmente).
5.2.1. Dióxido de Carbono
O Dióxido de Carbono (CO²), por exemplo, conhecido como Gás Carbônico, é produzido na queima de combustíveis fósseis, como a gasolina, é lançado diariamente na atmosfera. Durante anos a concentração de CO² tem aumentado, passou de 280 ppm (partes por milhão) no ano de 1750, para os 393 ppm atuais, representando um aumento de aproximadamente 40%, com esse aumento o dióxido de carbono se tornou um dos grandes vilões do efeito estufa, quando se fala em quantidade, anualmente cerca de 2.650 bilhões de toneladas de dióxido de carbono são lançadas na atmosfera. Como o tempo médio de permanência do CO² na atmosfera é de cerca de cem anos, a estabilização ou mesmo a diminuição do teor atmosférico desse gás requer diminuição significativa em sua emissão. Se essa quantidade continuar aumentando, acredita-se que ocasionará uma série de problemas na Terra.
6. PROJETO DO PROGRAMA
1 Tela inicial do sistema.
2 Digite o modelo do seu carro no campo “Pesquise o modelo do seu veículo” e clique em “Pesquisar”.
3 Após pesquisar, uma lista de veículos relacionados ao digitado é apresentada.
4 Selecione o veículo desejado dentre as opções listadas, os campos de “Informações Modelo” serão preenchidos automaticamente.
5 Para saber se seu veículo está ou não dentro das especificações de fábrica, deverá digitar o consumo do mesmo atualmente no campo “Digite o consumo médio do seu veículo” e clique em “Calcular”.
6 Em seguida o programa lhe dirá a situação de seu veículo e dará uma dica do que deve ser feito para melhorar o consumo de seu veículo.
7. TECNOLOGIAS UTILIZADAS
7.1 SWING
No ano de 1996 a Netscape criou uma biblioteca GUI (Interface Gráficas com Usuários) chamada de IFC (Internet Foundation Classes), e junto da SUN aperfeiçoaram-na e criaram uma biblioteca para interfaces chamada Swing.
Swing é um conjunto de ferramentas GUI que fazem parte da JFC (Java Foundation Classes (conjuntos de características para se construir os GUI’s), fornece à interface de usuário componentes mais eficazes.
· Componentes do Swing:
O pacote Swing possui componentes próprios, como:
· Telas aperfeiçoadas: JTabbedPane, JToolBar, JInternalFrame, JColorChooser, etc;
· Botões e campos para disposição de informações: JFormattedTextField, JProgressBar, JSpeener, JPasswordField, JTextPane, JTextArea, etc;
· Menus: JMenuBar, JMenu, etc.
No Swing há uma vasta gama de controles extras, como áreas para textos que podem mostrar conteúdos HTML, por exemplo, botões que suportem imagens, selecionadores de cores, dentre outros. Há a possibilidade de alterar-se a borda em grande parte dos componentes, além de poder associar imagens à eles, e até, ter controle sobre como é desenhado os detalhes de apresentação gráfica.
Ao se criar uma janela gráfica no Java, é necessária a utilização de uma biblioteca gráfica, ou seja, o Swing. Ele é uma das bibliotecas gráficas mais utilizadas na programação Java, pois contém todas as características atualizadas, além de desenhar por conta própria todos os componentes necessários, ao invés de delegar essa tarefa ao sistema operacional, como a maioria das interfaces gráficas trabalham. Por se tratar de uma interface de programa aplicativo (API) de alto nível, ou seja, mais abstrações, menor aproximação das API’s do sistema operacional, ela tem uma menor desempenho comparada a outras API’s gráficas e consome mais memória RAM em geral, porém é mais completa e os programas que usam Swing tem uma aparência muito parecida, independente do sistema operacional utilizado.
Para o Swing ser aplicado é preciso conhecer alguns conceitos de sua biblioteca gráfica. Assim como, outras aplicações gráficas, os objetos devem ser colocados em janelas, organizadas em Container ou Painéis, e não no desktop.
	Objetos gráficos ou componentes gráficos são elementos que permitem interação entre as aplicações, como botões, caixas de texto, rótulos, etc. São criados como objetos normais a partir das classes definidas na biblioteca gráfica. Container é uma área utilizada para a “colagem” dos objetos gráficos. Elementos gráficos são criados a partir da instância de um objeto do tipo escolhido, por exemplo: para criar uma caixa de texto é preciso instanciar um objeto da classe JTextField que é uma classe da biblioteca Swing que representa uma caixa de texto. 
· JTextField caixa = new JTextField();
Válido lembrar que alguns tipos de objetos gráficos podem receber parâmetros quando estiverem sendo instanciados.
7.1.1 Conectando os Elementos
A janela do Container e os demais objetos gráficos criados ficam dispersos na memória, por isso é preciso conectá-los uns aos outros, para que possam aparecer dentro da mesma janela. 
Para isso ocorrer primeiro precisamos conectar os objetos gráficos no Container.
· Sintaxe: <objeto container>.add(<objeto gráfico>);
· Exemplo: painel.add(IblHello); 
Em seguida deve se conectar o Container na janela gráfica
· Sintaxe: <objeto Jframe>.setContantPane(<objeto conteiner>);
· Exemplo: janela.setContentPane(painel);
Nota-se que uma janela gráfica pode conter apenas um objeto do tipo Container.
Agora que os elementos estão conectados resta determinar o tamanho da janela e torná-la visível, para isso utilizam-se as seguintes funções:
· Determinando o tamanho:
O tamanho da janela é medido em pixels.
· Sintaxe: <objeto janela>.setSize(<comprimento>, <altura>);
· Exemplo: janela.setSize(400,200);
· Tornando uma janela visível:
Se deixar como true a janela fica visível e se deixar como false se tornará invisível.
· Sintaxe: <obeto janela>.setVisible(<visivel>);
· Exemplo: janela.setVisible(true);
7.2 JDBC
Quando na criação de um sistema utilizamos o Java é comum junto usarmos o JDBC para acessar os Bancos de Dados através de interfaces, isso o faz ser uma API (application programming interface). O JDBC é uma biblioteca que disponibiliza classes e interfaces possibilitando a execução e manipulação de resultados consultados no SQL através do Java, ele traduz a linguagem do banco de dados para a linguagem do programa e vice e versa. Para que haja a ligação através da interface com o banco usam-se classes, as mesmas fazem a ponte entre o código e o banco, o conjunto delas recebe o nome de driver, que são implementações do JDBC para serem utilizados com o Java, os mesmos devem estar no pacote principal, o “java.sql”.
De uma forma simplificada o Java tem cinco funções principais:
1) Estabelece conexão com o Banco de Dados;
2) Realiza consultas;
3) Recebe os resultados das consultas;
4) Obtém informações sobre o banco de dados, as tabelas e as visões;
5) Além de executar transações.
Na execução do programa deve-se especificar qual driver será usado, através da seguinte codificação “Class.forName(JDBC-drive-class-name)”, em seguida o driver será carregado na memória. Os mesmos podem ser encontrados em quatro categorias:
· TIPO 1 - PONTE JDBC-ODBC: Esse é o tipo mais simples e mais restrito à plataforma Windows. Utiliza-se o ODBC (Open Database Connectivity) para se conectar ao bancode dados, transformando métodos JDBC em chamadas às funções do ODBC;
· TIPO 2 - DRIVER API-NATIVO: Esse driver traduz as chamadas JDBC para as chamadas da API do banco de dados usado. Como o tipo 1, pode precisar de software extra instalado na máquina;
· TIPO 3 - DRIVER DE PROTOCOLO DE REDE: Traduz a chamada JDBC para um protocolo de rede independente do banco utilizado, que é traduzido por um servidor. Por se usar um protocolo independente podem-se conectar as aplicações a vários bancos de dados distintos;
· TIPO 4 - DRIVER NATIVO: Converte chamadas JDBC diretamente no protocolo do banco, normalmente é independente da plataforma, escrito pelos próprios desenvolvedores e apresenta ganhos no desempenho.
Há cinco passos básicos para se fazer no “pacote java.sql”, além de suas principais classes.
· Passos básicos:
1 - Registrar o driver a ser usado;
2 - Conectar-se ao SGBD;
3 - Executar comandos no SQL;
4 - Processar resultados recebidos;
5 - Fechar a conexão.
· Classes:
· DriverManager: cria a conexão com o banco de dados;
· Connection: mantém a conexão com o banco aberta;
· Statement: executa e gerencia as instruções do SQL;
· ResultSet: receber e apresenta os dados vindos do banco.
8. DESCRIÇÃO DAS CLASSES
8.1 Conexao
public class Conexao {
 public static Connection getConexao() throws SQLException {
 try {
 Class.forName("com.mysql.jdbc.Driver");
 System.out.println("Conectando ao Banco");
 System.out.println("Conectado ao banco!");
 return DriverManager.getConnection("jdbc:mysql://localhost/bancodadoscarros", "root", "adm");
 } catch (ClassNotFoundException e) {
 throw new SQLException(e.getMessage());
 }
 }
A Classe "Conexao" é responsável pela conexão ao banco de dados, ou seja, a mesma, quando executada busca as informações referente ao local onde esta localizado o Banco de Dados, neste caso "jdbc:mysql://localhost/bancodadoscarros".
Concordamos que sem esta situação não seria possível realizar o projeto, pois uma classe que realiza uma conexão com o banco de dados é a classe mais importante do programa, já que utilizamos uma aplicação que contém informações já guardadas em sistema.
O objetivo da aplicação é diminuir a poluição do ar que respiramos, como mostraríamos uma situação atual de resultados já cadastrados em sistema sem uma conexão para que essas informações possam servir de base para o usuário, resumindo sem conexão não podemos consultar através de uma base de dados de veículos.
8.2 CarroDao
public class CarroDao {
 private Connection conexao;
 public CarroDao() throws SQLException {
 this.conexao = Conexao.getConexao();
 }
A classe "CarroDao" é responsável pelo gerenciamento inteligente dos dados, uma comunicação com a base de dados.
A característica principal é ser como um tradutor, pois a classe busca os dados do bando e os convertem em objetos a serem usados no sistema, e realiza também o inverso, pega as informações do sistema e as convertem para o entendimento do SQL.
Para não haver várias conexões ao banco de dados no código em diversas partes da aplicação e se tornar repetitivo, a classe ajuda a resolver este problema ela unifica os pontos de acesso para não deixar o código poluído.
O objetivo é sempre minimizar ao máximo os códigos em uma aplicação e o DAO faz exatamente isso, simplifica uma situação para que se torne mais produtivo e simples de se entender, uma vez que em um sistema de grande porte várias pessoas irão alterar a aplicação e para isto o entendimento é essencial.
8.3 Carros
 public class Carros {
 private long codigo;
 private String fabricante;
 private String modelo;
 private String motor;
 private String versao;
 private String consumomedio;
 private String rendimentoveiculo;
public long getCodigo() {
 return codigo;
 }
 public void setCodigo(long codigo) {
 this.codigo = codigo;
 }
A classe "Carros" é responsável pelos Getters e Setters, ou seja, serve para obtermos informações das variáveis com classes definidas como Private, mesmo que a definição delas sejam Public. A segurança que os Getters e Setters nos proporcionam, é vista quando tentamos acessar as variáveis definidas como Private e as mesmas só podem ser acessadas de dentro da classe onde elas se encontram, sendo a segurança do sistema uma questão primordial, pois dessa forma as variáveis podem conter informações pessoais.
Não se esquecendo do total controle sobre as variáveis através dos métodos, pois caso não definamos o que realmente queremos, o usuário poderá usar uma situação à vontade no sistema, sem controle.
8.4 Principal 
public class Principal
public static void main(String[] args) {
 System.out.println("Iniciando a aplicação.");
 new JFFormulario().setVisible(true);
A classe "Principal" se localiza dentro do pacote Main, pois o “public static void main(String[] args)” é um método que não retorna valor devido o uso do void (para retornar algum valor é necessário utilizar int ou double, por exemplo.)
O método main vai receber parâmetros de um vetor String que contém aquilo que passa para o programa ao executá-lo na linha de comando, além também de ser um método público da classe, que pode ser chamado por qualquer outra classe que acesse a classe Principal.
8.5 JFFormulario
public class JFFormulario extends javax.swing.JFrame {
DefaultTableModel tmCarro = new DefaultTableModel(null, new 
String[]{"Codigo", "Fabricante", "Modelo", "Motor","Versao","Consumo Medio"});
 List<Carros> carros;
 ListSelectionModel lsmCarro;A
Classe "JFFormulario" é onde a aplicação interage com o usuário, ou seja, as visualizações e resultados das outras classes aparecerão nesta classe para que usuário possa ter o máximo de interação possível com a ferramenta.
Aqui podemos ver o resultado das classes anteriores agindo com a parte de interação do sistema, sendo que, as informações que o banco de dados deve mostrar esta totalmente ligada a esta ultima classe, uma vez que a mesma é responsável pela visualização do programa. Dentro dela ocorre talvez o que é mais importante no programa o algoritmo de cálculo de consumo, já que sem ele não teríamos como gerar o consumo dos veículos e obter o resultado desejado.
Sempre que pensamos em interação com o usuário pensamos em algum possível erro que pode ocorrer na ferramenta caso o usuário realize um procedimento não estabelecido pelo sistema, por exemplo, digitar uma string em um campo do tipo int, neste caso, sem dúvidas, ocorreria algum erro indesejável, pois o mesmo não esta preparado para essa ação em especifico, Eis aqui onde entram as validações e restrições, para que o usuário do sistema não realize um procedimento que não esteja pré-estabelecido pelo desenvolvedor.
Os botões e caixas de textos definidos dentro desta aplicação são de extrema importância para o entendimento, não se deve colocar uma parte gráfica para interação sem explicação ou que tenha alguma consequência lógica por trás das informações. A classe “JFFormulario extends javax.swing.JFrame”, justamente a que usamos para criar uma visualização agradável e fácil de se entender.
9. LINHAS DE CÓDIGO
9.1 Conexao.java
package BancoMySql;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
/**
 *
 * @author Felipe
 */
public class Conexao { 
 public static Connection getConexao() throws SQLException {
 try {
 Class.forName("com.mysql.jdbc.Driver");
 System.out.println("Conectando ao Banco");
 System.out.println("Conectado ao banco!");
 return DriverManager.getConnection("jdbc:mysql://localhost/bancodadoscarros", "root", "adm");
 } catch (ClassNotFoundException e) {
 throw new SQLException(e.getMessage());
 }
 }
}
9.2 CarroDao.java
package Dao;
import BancoMySql.Conexao;
import GetterSetters.Carros;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;import java.util.ArrayList;
import java.util.List;
/**
 *
 * @author Felipe
 */
public class CarroDao {
 private Connection conexao;
 public CarroDao() throws SQLException {
 this.conexao = Conexao.getConexao();
 } 
 public List<Carros> getListaCarro(String modelo) throws SQLException {
 String sql = "select * from carros where modelo like ?";
 PreparedStatement stmt = this.conexao.prepareStatement(sql);
 stmt.setString(1, modelo);
 ResultSet rs = stmt.executeQuery();
 List<Carros> minhaLista = new ArrayList<Carros>();
 while (rs.next()) {
 Carros carro1 = new Carros();
 carro1.setCodigo(Long.valueOf(rs.getString("codigo")));
 carro1.setFabricante(rs.getString("fabricante"));
 carro1.setModelo(rs.getString("modelo"));
 carro1.setMotor(rs.getString("motor"));
 carro1.setVersao(rs.getString("versao"));
 carro1.setConsumomedio(rs.getString("consumo_medio"));
 minhaLista.add(carro1);
 }
 rs.close();
 stmt.close();
 return minhaLista;
 }
}
9.3 Carro.java
package GetterSetters;
/**
 *
 * @author Felipe
 */
public class Carros {
 private long codigo;
 private String fabricante;
 private String modelo;
 private String motor;
 private String versao;
 private String consumomedio;
 private String rendimentoveiculo;
 public long getCodigo() {
 return codigo; }
 public void setCodigo(long codigo) {
 this.codigo = codigo; }
 public String getFabricante() {
 return fabricante; }
 public void setFabricante(String fabricante) {
 this.fabricante = fabricante; }
 public String getModelo() {
 return modelo; }
 public void setModelo(String modelo) {
 this.modelo = modelo; }
 public String getMotor() {
 return motor; }
 public void setMotor(String motor) {
 this.motor = motor; }
 public String getVersao() {
 return versao; }
 public void setVersao(String versao) {
 this.versao = versao; }
 public String getConsumomedio() {
 return consumomedio; }
 public void setConsumomedio(String consumomedio) {
 this.consumomedio = consumomedio; }
 public String getRendimentoveiculo() {
 return rendimentoveiculo; }
 public void setRendimentoveiculo(String rendimentoveiculo) {
 this.rendimentoveiculo = rendimentoveiculo; } 
}
9.4 Principal.java
package Main;
import Formulario.JFFormulario;
/**
 *
 * @author Felipe
 */
public class Principal {
 /**
 * @param args the command line arguments
 */
 public static void main(String[] args) {
 System.out.println("Iniciando a aplicação.");
 new JFFormulario().setVisible(true); }
}
9.5 JFFormulario.java
package Formulario;
import GetterSetters.Carros;
import Dao.CarroDao;
import java.sql.SQLException;
import java.util.List;
import javax.swing.JOptionPane;
import javax.swing.JTable;
import javax.swing.ListSelectionModel;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
import javax.swing.table.DefaultTableModel;
/**
 *
 * @author Felipe
 */
public class JFFormulario extends javax.swing.JFrame {
 DefaultTableModel tmCarro = new DefaultTableModel(null, new String[]{"Codigo", "Fabricante", "Modelo", "Motor","Versao","Consumo Medio"});
 List<Carros> carros;
 ListSelectionModel lsmCarro;
 
 private double resultado1;
 private double resultado2;
 private void mostraPesquisa(List<Carros> carros) {
 //Remove o histórico da ultima pesquisa, na tabela.
 while (tmCarro.getRowCount() > 0) {
 tmCarro.removeRow(0); }
 if (carros.isEmpty()) {
 JOptionPane.showMessageDialog(null, "Nenhum modelo de carro cadastrado!");
 } else {
 String[] linha = new String[]{null, null,null, null, null,null};
 for (int i = 0; i < carros.size(); i++) {
 tmCarro.addRow(linha);
 tmCarro.setValueAt(carros.get(i).getCodigo(), i, 0);
 tmCarro.setValueAt(carros.get(i).getFabricante(), i, 1);
 tmCarro.setValueAt(carros.get(i).getModelo(), i, 2);
 tmCarro.setValueAt(carros.get(i).getMotor(), i, 3);
 tmCarro.setValueAt(carros.get(i).getVersao(), i, 4);
 tmCarro.setValueAt(carros.get(i).getConsumomedio(), i, 5); }
 }
 }
 //método responsavel de não permite erro depois que realize a execusão do botão
 private void jTTabelaLinhaSelecionada(JTable tabela) {
 if (jTTabela.getSelectedRow() != -1) {
 //HabilitaDados(); jTCodigo.setText(String.valueOf(carros.get(tabela.getSelectedRow()).getCodigo()));
 jTFabricante.setText(carros.get(tabela.getSelectedRow()).getFabricante());
 jTModelo.setText(carros.get(tabela.getSelectedRow()).getModelo());
 jTMotor.setText(carros.get(tabela.getSelectedRow()).getMotor());
 jTVersao.setText(carros.get(tabela.getSelectedRow()).getVersao()); jTConsumoMedio.setText(carros.get(tabela.getSelectedRow()).getConsumomedio());
 } else {
 jTCodigo.setText("");
 jTFabricante.setText("");
 jTModelo.setText("");
 jTMotor.setText("");
 jTVersao.setText("");
 jTConsumoMedio.setText("");
 }
 }
 
 public void ListarCarro() throws SQLException {
 CarroDao dao = new CarroDao();
 carros = dao.getListaCarro("%" + jTPesquisar.getText() + "%");
 mostraPesquisa(carros); }
 
@SuppressWarnings("empty-statement")
 /**
 * Creates new form JFFormulario
 */
 public JFFormulario() {
 initComponents(); }
 /**
 * This method is called from within the constructor to initialize the form.
 * WARNING: Do NOT modify this code. The content of this method is always
 * regenerated by the Form Editor.
 */
 @SuppressWarnings("unchecked") 
 private void jBPesquisarActionPerformed(java.awt.event.ActionEvent evt) { 
 try {
 // Classe responsavel por executar o método de pesquisa
 ListarCarro();
 } catch (SQLException ex) {
 JOptionPane.showMessageDialog(null, "Problemas ao utilizar a função de pesquisa" + ex); }
 } 
 private void jBCalcularActionPerformed(java.awt.event.ActionEvent evt) { 
 try {
		resultado1 = Double.parseDouble(jTConsumoUsuario.getText());
		resultado2 = Double.parseDouble(jTConsumoMedio.getText());
			
			if (resultado2 <= resultado1){
 
 jTResultado.setText("O veículo se encontra dentro das "
 + "configurações de fábrica, mantenha a manutenção em dia. "
 + "O modo como o veículo é utilizado vai determinar o intervalo de manutenção. "
 + "- Rodar mais de 8 quilômetros por dia." 
 + "- Não manter o motor em marcha lenta por longos períodos."
 + "- Não rebocar outros veiculos, trailler e etc constantemente "
 + "- Não realizar paradas e partidas frequentes.");
 	}
			if (resultado2 > resultado1){
 
 jTResultado.setText("O veículo se encontra abaixo das " 
 + "configurações de fábrica, faça a manutenção preventiva de seu veículo. "
 + "Esse tipo de cuidado garante algumas vantagens aos motoristas" 
 + "Afinal de contas, o bom funcionamento do veículo é necessário para dar segurança "+ "e ajuda na preservação o meio ambiente.");
 }
 }catch (NumberFormatException ex) {
 JOptionPane.showMessageDialog(null, "Nenhum valor foi digitado, digite o consumo médio do seu veiculo. / " + ex);
 }
 } 
 private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) { 
 jTCodigo.setText("");
 jTFabricante.setText("");
 jTModelo.setText("");
 jTMotor.setText("");
 jTVersao.setText("");
 jTConsumoMedio.setText("");
 jTPesquisar.setText("");
 jTResultado.setText("");
 jTConsumoUsuario.setText(""); 
 } 
 private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { 
 System.exit(0); } 
 private void jTPesquisarActionPerformed(java.awt.event.ActionEvent evt) { 
 // TODO add your handling code here: } 
 private void jTFabricanteKeyTyped(java.awt.event.KeyEvent evt) { 
 // TODO add your handling code here: } 
 private void jTFabricanteActionPerformed(java.awt.event.ActionEvent evt) { 
 
 } 
 /**
 * @param args the command line arguments
 */
 public static void main(String args[]) {
 /* Set the Nimbus look and feel */
 //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
 /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
 * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html 
 */
 try {
 for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
 if ("Nimbus".equals(info.getName())) {
 javax.swing.UIManager.setLookAndFeel(info.getClassName());
 break; }
 }
 } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | javax.swing.UnsupportedLookAndFeelException ex) {
 java.util.logging.Logger.getLogger(JFFormulario.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
 }
 //</editor-fold>
 /* Create and display the form */
 java.awt.EventQueue.invokeLater(new Runnable() {
 @Override
 public void run() {
 new JFFormulario().setVisible(true); }
 });
 }
 // Variables declaration - do not modify 
 private javax.swing.JButton jBCalcular;
 private javax.swing.JButton jBPesquisar;
 private javax.swing.JButton jButton1;
 private javax.swing.JButton jButton2;
 private javax.swing.JLabel jLabel1;
 private javax.swing.JLabel jLabel10;
 private javax.swing.JLabel jLabel2;
 private javax.swing.JLabel jLabel3;
 private javax.swing.JLabel jLabel4;
 private javax.swing.JLabel jLabel5;
 private javax.swing.JLabel jLabel6;
 private javax.swing.JLabel jLabel7;
 private javax.swing.JLabel jLabel8;
 private javax.swing.JLabel jLabel9;
 private javax.swing.JPanel jPanel1;
 private javax.swing.JPanel jPanel2;
 private javax.swing.JScrollPane jScrollPane1;
 private javax.swing.JScrollPane jScrollPane2;
 private javax.swing.JTextField jTCodigo;
 private javax.swing.JTextField jTConsumoMedio;
 private javax.swing.JTextField jTConsumoUsuario;
 private javax.swing.JTextField jTFabricante;
 private javax.swing.JTextField jTModelo;
 private javax.swing.JTextField jTMotor;
 private javax.swing.JTextField jTPesquisar;
 private javax.swing.JTextArea jTResultado;
 private javax.swing.JTable jTTabela;
 private javax.swing.JTextField jTVersao;
 // End of variables declaration 
}
10. CONCLUSÃO
A página inicial mostra ao usuário qual é o intuito do programa, no caso, calcular o consumo médio de um veículo e o comparar com as especificações do fabricante, para dessa forma conscientizar os condutores a manter a manutenção de seus veículos em dia para que não haja tanta emissão de poluentes como vem acontecendo ao passar dos anos.
	Sendo assim, criamos um sistema que conectado a um banco de dados, com informações de mais de 900 veículos, mostra ao usuário informações básicas do veículo pesquisado.
Para trazer à tela as informações guardadas no Banco de Dados, é necessário selecionar o veículo certo, de acordo com Fabricante, Modelo, Motor e Versão, basta clicar no desejado.
	Após a seleção o programa gera no campo de “Informações Modelo” as informações contidas no Banco de Dados a respeito daquele veículo, conforme abaixo, o veículo selecionado foi o Corsa Sedan visto no campo “Modelo”, que é do “Fabricante” General Motors, tem seu “Código” para localização no Banco de dados, sua “Versão” é SUPER, seu “Motor” é 1.0MPFI A, e seu “Consumo Médio” de acordo com o fabricante é de 12 Km/L.
	O único trabalho que o usuário terá é de saber quanto é a média de consumo do seu veículo, acrescentar a informação ao sistema e clicar em “Calcular” para que o sistema realize o cálculo e compare a realidade de seu veículo com as especificações do fabricante para o mesmo.
	Após o cálculo e comparação, o sistema lhe da uma análise da situação do veículo, conforme abaixo, o veículo consome 11 Km/L, sendo que seu devido consumo seria de 12 Km/L, ou seja, o mesmo está abaixo do que deveria, está emitindo mais gases do que deveria, o sistema para conscientizar dá a dica de manutenção do veículo para que assim ele não prejudique o meio ambiente por algo tão simples de ser resolvido.
	Definitivamente o sistema não resolverá o problema da poluição no mundo, mas de certa forma, faz com que os condutores de veículos que tiverem acesso ao sistema vejam o quão pequena é a diferença do consumo de seus veículos para o especificado pela fábrica, e se policiem para mantê-los adequados. Realizar a manutenção preventiva do veículo diminui os riscos de acidentes e reduz a emissão de poluentes. Segundo especialistas, é recomendado que se faça a manutenção de 6 em 6 meses. É válido verificar se o sistema de exaustão (escapamento e catalisador) está em boas condições de uso, se há vazamentos de óleo ou outro líquido, checar as velas e cabos do motor, andar com o pneu do carro calibrado adequadamente e evitar, assim, o gasto excessivo de combustível e desgaste da roda, evitar o superaquecimento do motor pedindo, sempre quando for abastecer o veículo, ao frentista para verificar e completar o nível de água do radiador e óleo do motor, andar com o carro em uma rotação de no máximo 3.500 RPM para poluir menos o meio ambiente e gastar menos combustível, evitar andar com o carro na reserva de combustível o que pode queimar a bomba, dentre muitas outras dicas que devem ser levadas em consideração.
Ainda assim, não há regras entre os veículos de qual motor emite mais ou menos poluentes. Por vezes pode acontecer de um carro 1.0 emitir mais CO² do que um 3.0, é o caso do BMW Série 5, com 306 cavalos, que despeja no ar cerca de 178 gramas do gás por quilômetro rodado, apenas 4 gramas a menos que o Ford Fiesta 1.0, cuja potência é de 73 cavalos. O tamanho do motor não tem uma relação direta com a emissão de CO², por exemplo, um Logan 1.0 com, 77 cavalos, despeja cerca de 4 gramas apenas a mais de CO² que o Audi A4 2.0, com 214 cavalos. Mesmo não sendo prejudicial à saúde, o CO² tem ligação direta com o aquecimento global, caso sua emissão não reduza estima-se que a temperatura do planeta aumente até 4ºC até o ano de 2100. De acordo estudos, divulgados pela Cetesb, houve um aumento de 15,4 milhões de toneladas de CO² durante 18 anos no estado de São Paulo, sendo que em 2008, foram lançadas 34,8 milhões de toneladas do mesmo, sendo mais da metade desse valor gerada pelos automóveis.
Não há dificuldades quando se pensa que apenas um simples gesto poderá salvar a vida do nosso planeta, ou ajudará nisso. Devemos nos conscientizar e passar adiante a ideia de que o futuro da nossa casa, o Planeta Terra, está em nossas mãos e são as pequenas coisas, vindas de pessoa por pessoa que manterá nosso Planeta vivo, gerando alimento e moradia para centenas de milhares de pessoas, animais, seres vivos. Ao pensarmos em algo para colocar em prática nosso conhecimento com o curso de Sistemas de Informação e ao mesmo tempo algo que tivesse relação com o Ambiente, não hesitamos ao escolher o tema, já que a poluição é algo que nos afeta diariamente, e saber que podemos não só com esses, mas muitos outros futuros trabalhos, conscientizar milhares de pessoas e ajudá-las a se policiar, é algo que nos faz manter a ideia do que queremos para vida, para nossos futuros. Futuros analistas, desenvolvedores de sistemas, sistemas que surgem com tanta frequência e ajudam a tantas pessoas, por mais simples ou complexos que sejam, o que seria da humanidade sem a tecnologia, sem as pessoas que se dedicam à ela? Hoje em dia, temos certeza de que não seríamos nada, de que precisamos dela para tudo, para simplesmente ouvir música até tratar uma grave doença. Só temos que ainda mais a partir de agora, da nossa geração, fazer diferença no que formos fazer, colocar nossos conhecimento em prática e mostrar ao mundo que a tecnologia jamais irá estagnar.
11. REFERÊNCIAS BIBLIOGRÁFICAS
BAIRD, C. O CO² e o Aquecimento Global, 2002. Disponível em: < http://www.clubedaquimica.com>. Acessado em: 04/2014.
CAMILO, Márcio da Silva. Java: uma linguagem moderna. Disponível em: <http://www.sirmacstronger.eti.br/java/introducaoprogramacaoorientadaobjetosjava.php>. Acesso em: 05/2014. 
COSTA, Clayton M. Aceso a banco de dados com JDBC, 2011. Disponível em: <http://www.ifrn.edu.br >. Acessado em: 06/2014.
DAVID, Marcia Frayze. Programação Orientada a Objetos: uma introdução, 2007. Disponível em: <http://www.hardware.com.br/artigos/programacao-orientada-objetos/>. Acessado em: 05/2014.
Desconhecido. Disponível em: < http://www.cetesb.sp.gov.br/>. Acessado em: 05/2014.
Desconhecido. Bancos de Dados e JDBC. Disponível em: <http://www.caelum.com.br/apostila-java-web/bancos-de-dados-e-jdbc/>. Acessado em: 05/2014.
Desconhecido. Dióxido de Carbono. Disponível em: < http://www.infoescola.com/quimica/dioxido-de-carbono/>. Acessado em: 04/2014.
Desconhecido. Diversos. Disponível em: <http://greenpeacecomvoce.org.br/>. Acessado em: 03/2014.
Desconhecido. Gases Poluentes. Disponível em: <http://www.suapesquisa.com/o_que_e/gases_poluentes.htm>. Acessado em: 04/2014.
Desconhecido. Java e Orientação a Objetos. Disponível em: < http://www.caelum.com.br/apostila-java-orientacao-objetos/>. Acessado em: 05/2014.
Desconhecido. JDBC. Disponível em: < http://pt.wikipedia.org/wiki/JDBC>. Acessado em: 05/2014.
Desconhecido. Modelagem de Dados. Disponível em: <http://pt.wikipedia.org/wiki/Modelagem_de_dados>. Acessado em: 04/2014.
Desconhecido. Orientação a objetos e linguagem Java. Disponível em: < http://www.inf.ufrgs.br/pet/cursos/Java/cursojavatotal.pdf>. Acessado em: 05/2014.
Desconhecido. Orientação por Objetos: Vantagens e Desvantagens, 2008. Disponível em: <http://wpjr2.wordpress.com/2008/04/23/orientacao-por-objetos-vantagens-e-desvantagens/>. Acessado em: 05/2014.
Desconhecido. Poluição do ar. Disponível em: <http://www.suapesquisa.com/poluicaodoar/>. Acessado em: 04/2014.
GOMES, Reinaldo. Relacionamentos entre objetos. Disponível em: <http://www.cin.ufpe.br/~rcmg/cefet-al/proo/aulas/proo_04_relacionamento_objetos_6pp.pdf>. Acessado em: 05/2014.
MACORATTI, José Carlos. Conceitos Básicos de Modelagem de Dados. Disponível em: <http://www.macoratti.net/cbmd1.htm>. Acessado em: 05/2014.
NORONHA, Robinson Vida. Relacionamento entre Classes. Disponível em: <http://www.professorvida.com.br/if62c/material/relacionamentos.pdf>. Acessado em: 05/2014.
RICARTE, Ivan Luiz Marques. Programação Orientada a Objetos: Uma Abordagem com Java, 2001. Disponível em: <http://www.dca.fee.unicamp.br/cursos/PooJava/Aulas/poojava.pdf>. Acessado em: 04/2014.
SAKURAI, Rafael. Relacionamento Um-para-Muitos, 2011. Disponível em: <http://www.universidadejava.com.br/docs/relacionamento-um-para-muitos>. Acessado em: 05/2014.
SILVEIRA, Paulo. Introdução ao JDBC, 2003. Disponível em: <http://www.guj.com.br>. Acessado em: 05/2014.
SOUZA, Cleidson. Conceitos de Orientação a Objetos. Disponível em: <http://www.ufpa.br/cdesouza/teaching/es/3-OO-concepts.pdf>. Acessado em: 05/2014.
THOME, Rogério. Modelagem Orientada por Objeto, 1998. Disponível em: <http://www.dpi.inpe.br/teses/thome/cap3.pdf>. Acessado em: 05/2014.
12. FICHAS APS

Outros materiais