TrabalhosGratuitos.com - Trabalhos, Monografias, Artigos, Exames, Resumos de livros, Dissertações
Pesquisar

Desenvolvimento De Software Utilizando Conceitos De Programação Orientada A Objetos

Dissertações: Desenvolvimento De Software Utilizando Conceitos De Programação Orientada A Objetos. Pesquise 860.000+ trabalhos acadêmicos

Por:   •  27/10/2013  •  3.942 Palavras (16 Páginas)  •  1.718 Visualizações

Página 1 de 16

UNIVERSIDADE PAULISTA - UNIP

“Desenvolvimento de software utilizando conceitos de programação orientada a objetos”

SÃO PAULO

2013

2

UNIVERSIDADE PAULISTA- UNIP

“Desenvolvimento de software utilizando conceitos de programação orientada a objetos”

O Trabalho de conclusão da disciplina de Atividades Práticas Supervisionadas (APS), do curso de Sistemas de Informação da Instituição de Ensino da Universidade Paulista – UNIP.

Orientador: Rivail

Juliana Pereira do Nascimento B36GFD-0

Letícia Bastos de Souza B297IH-6

Renata Cappucci Alves T607AG-7

SÃO PAULO

2013

3

Conteúdo

Objetivo do Trabalho ..........................................................................................................................4

Introdução ..........................................................................................................................................5

Elementos de programação Orientada a Objeto (conceitos gerais) ..............................................7

Dissertação ........................................................................................................................................8

Projeto (estrutura) do programa ...................................................................................................... 13

Relatório com as linhas de código do programa ........................................................................... 16

Menu.java ..................................................................................................................................... 16

Lixo.Java ...................................................................................................................................... 20

Creditos.java ................................................................................................................................ 30

Apresentação do programa em funcionamento em um computador, apresentando todas as funcionalidades pedidas e extras. ................................................................................................... 34 Menu Principal .............................................................................................................................. 34 1° opção do Menu Principal: Cadastrar ...................................................................................... 34 Tela de Cadastro .......................................................................................................................... 35 Cadastrando Bairro,Quantidade de Moradores e Quantidade de Lixo Localizado. ............... 35 Tela de Resultado (Calculo da Multa) ........................................................................................ 36 Limpando os Campos de Dados ................................................................................................. 36 Saindo da Tela de Cadastro e Voltando para o Menu Principal .............................................. 37 2° opção do Menu Principal: Créditos ........................................................................................ 37 Tela de Creditos (Informações pessoais e Acadêmicas dos Elaboradores) ........................... 38 Saindo do Sistema ....................................................................................................................... 38

Bibliografia: ...................................................................................................................................... 39

Livros: ........................................................................................................................................... 39

Sites: ............................................................................................................................................. 39

Ficha de atividades Práticas Supervisionadas .............................................................................. 40

4

Objetivo do Trabalho

O objetivo central deste trabalho é mostrar como alcançar a clareza do programa por meio de técnicas comprovadas da programação orientada a objetos. O Java é uma poderosa linguagem de programação de computador, na construção de sistemas de informações importantes. Iniciamos nossa abordagem sobre orientação a objetos com uma terminologia-chave. Onde quer que você olhe no mundo real, você vê objetos, pessoas, animais, plantas, carros, aviões, edifícios, computadores, etc. Os humanos pensam em termos de objetos. Telefones, casas, sinais de programa de computador, como os programas Java, também podem ser vistos como objetos, composto de uma grande quantidade de objetos de software interativos.

Aprendemos sobre os objetos existentes estudando atributos e observando seus comportamentos. Diferentes objetos podem ter atributos semelhantes e podem exibir comportamentos semelhantes.

O programa Java consiste em partes chamadas de classes. As classes incluem partes chamadas métodos que realizam tarefas e retornam informações ao concluir.

Em nosso trabalho o objetivo foi mostrar como esta poderosa linguagem de programação resolve problemas, de uma maneira direta com as técnicas de desenvolvimento orientada a objeto, dando assim uma forma melhor de entendimento para o projeto ”Lixo”, onde o projeto se volta para questão de melhoria do meio ambiente, onde se gasta uma quantidade de lixo irá ser paga uma multa.

5

Introdução A história da orientação a objetos se assemelha à história da computação. Inicialmente a preocupação era com a programação, surgindo depois o projeto e a análise. Modelagem de simulação é, particularmente, um problema difícil quando programado em uma linguagem convencional de terceira geração (COBOL, FORTRAN, C, Pascal etc.). A programação orientada a objetos iniciou-se com o desenvolvimento da linguagem Simula em 1967 especificamente para simulação de eventos discretos, continuando com a criação da linguagem Smalltalk, que introduziu o termo "orientado a objetos", nos anos 70. Esta última quase fez da noção de objeto um mito. Desde então surgiram várias linguagens inspiradas por aquelas e que se dizem orientadas a objetos. Algumas linguagens tradicionais, como Pascal e C, foram estendidas para suportar orientação a objetos. Nos anos 80, caracterizou-se pelo interesse nas interfaces gráficas com usuários (GUI). Os pioneiros nesta área criaram a interface WIMP - W para Windows (janelas), I para Icons (ícones) , M para Mice (plural de mouse) e P para Pointers (ponteiros). Os conceitos básicos de Smalltalk estão fortemente ligados a interfaces WIMP. A conseqüência mais evidente do sucesso das interfaces WIMP é o grande número de bibliotecas de objetos que foram construídas para desenvolvimento de interfaces deste tipo. Sem a usabilidade inerente à orientação a objetos, estas interfaces não poderiam ter sido construídas em tão larga escala (Graham, 1994), sendo demasiado complexas e de custo de desenvolvimento muito elevado. Como exemplos temos Presentation Manager e Windows, para PC - compatíveis, e OpenLook e OSF Motif para sistemas abertos baseados em UNIX. Desde os meados dos anos 70, tem havido considerável influência mútua entre as áreas de pesquisa e desenvolvimento em inteligência artificial e em orientação a objetos. As principais contribuições da inteligência artificial à orientação a objetos foram a sofisticação das teorias sobre herança, e a inclusão de conceitos (regras, mensagens, conhecimento, responsabilidades) como partes de objeto.

6

As demandas comerciais, juntamente ao amadurecimento da programação orientada a objetos, levaram à necessidade de as áreas de pesquisa e desenvolvimento em orientação a objetos se preocuparem com engenharia de software (nos moldes dos métodos estruturados), reusabilidade dos softwares (modularidade), sistemas abertos, e concorrência na utilização de dados persistentes, que suportassem orientação a objetos. Os benefícios de reusabilidade e extensibilidade podem ser aplicados a especificações e projetos assim como a códigos (Graham, 1994). Em um contexto mais geral de engenharia de software, quanto mais alto, em termos de abstração, o nível de reuso, maior o benefício (Prieto-Diaz, 1987), (Biggerstaff, 1989), (Sommerville, 1989). Uma vez que os esforços foram mais voltados a assuntos como interface com usuários e programação do que a assuntos como gerenciamento de bases de dados ou arquivos, houve muitos problemas relacionados a desempenho dos softwares baseados em linguagens orientadas a objetos. Assim, as linguagens orientadas a objetos fracassaram muito frequentemente no tratamento de persistência, de compartilhamento, de concorrência etc.

7

Elementos de programação Orientada a Objeto (conceitos gerais)

A programação orientada por objetos é uma nova proposta de desenvolvimento de softwares. A ideia por trás dessa técnica de códigos já prontos, denominados classes, para a criação de partes vitais (chamadas de objetos) de um programa. Na programação orientada por objetos, as linguagens empacotam as estruturas de dados e as rotinas (procedimentos e funções) que trabalham com elas. Assim, essas entidades podem ser tratadas como um único componente do programa. Todo programa em Java deve iniciar com a declaração de uma classe, uma vez que um aplicativo é considerado uma classe que pode ser estendida. O modificador public. indica que ela é uma classe pública, e devido a isso seu nome deve ser o mesmo dado ao arquivo do código-fonte. Esta já é uma diferença em relação às linguagens C e C++. Uma característica interessante da programação orientada por objetos é a possibilidade de derivar um objeto de outro, ou seja, criar um novo objeto que possui(herda) todos os tributos e ações do seu antecessor. Dentro dessa classe vem a definição da função principal do programa, denominada main, que é o ponto de entrada para execução do programa, com ocorre nas linguagens C e C++.O que difere uma da outra é a forma utilizada para declarar essa função. Em Java são utilizados os modificadores public e static .Outra diferença é que a função main e membro da classe. É impotente notar que essa função recebe parâmetros os quais são armazenadas na matriz (array) denominada args, do tipo Strings. Isso significa que você pode passar valores na linha de comando quando for executar o programa. Javaé totalmente orientada por objeto e teve seu desenvolvimento baseado nas linguagens C++ e Smalltalk.Embora sua estrutura tenha sido fortemente influenciada pela linguagens C++,não significa que Java seja uma variação de C++.O pessoal da Sun uniu os dois mundos (C++e Smaltalk) e criou uma linguagem nova que emprega conceitos utilizados em ambas.

8

Dissertação

Neste capítulo, descreveremos a estrutura do nosso programa como um todo, passo a passo de como foi criado nosso projeto com a linguagem Java.

O programa se resume em três classes filhas “Menu”, “Créditos” e “Lixo” que são extendidas da classe pai e interface “javax.swing.Jframe”. Para criar cada classe, foi utilizado o método de herança, onde houve uma associação entre as classes e as três classes flhas criadas herdaram os métodos e atributos da classe pai.

Na classe “Lixo” está representando o corpo do nosso programa, todos os campos que o usuário terá que preencher para que o programa calcule e retorne o resultado correto. Há na classe, o método público “Lixo” com todos os componentes da classe, a princípio. Há também os métodos privados da classe referentes a informação que o usuário irá passar ao programa e no que ele o retornará. São, respectivamente esses:

 “CampoNomeActionPerformed”

 “botaoLimparActionPerformed"

 “botaoCadastrarActionPerformed”.

É importante ressaltar o método privado que contém o cálculo do programa, que é o “botaoCadastrarActionPerformed”. Nele, o cálculo da multa é dividido em três partes, onde, dependendo da quantidade de moradores da cidade e da quantidade de lixos fornecida pelo usuário, o resultado se modificará. Por exemplo, a multa apresentada para moradores até 5000 pessoas com a quantidade de lixo maior que 100 é uma, para moradores entre 5000 a 10.000 pessoas com a quantidade de lixo mairo que 180 é outra e para moradores com até 10.000 pessoas e com a quantidade de lixo maior que 260 é outra. No método foram criadas as varáveis referentes ao calculo e os comandos utilizados foram If e else. Para finalizar, o método “Lixo” é instanciado com todos os seus objetos da classe e os métodos privados de todos os botçoes criados para a classe são criados e apresentados no método “main”.

Na classe “Creditos” há um método público chamado Créditos com todos os componentes da classe, onde no método Main será instanciado. Há na classe a importação de uma imagem que criamos que contém a representação dos créditos. Nela contém o logo da faculdade, o nome do projeto, o curso, a turma, a disciplina que foi utilizada como referência para a criação do projeto, o professor que está nos orientando e nossos nomes e Ras respectivos.

Na classe “Menu” há o método menu e todos os componentes das classes representados, tais como os métodos privados do Menu do programa e os botões criados. Nessa classe estão instanciados os métodos da classe Lixo, para que se faça

9

a referência ao clicar em cada botão. Nela, a três botões visíveis que o usuário terá escolha, um chamado “Cadastrar”, outro “Créditos e “Sair”. Ou seja, essa classe mostra o corpo do nosso Menu do programa. Fora os botões, colocamos uma imagem que tem como texto a palavra “Lixo” e está representando o tema do nosso projeto, que tem como fator principal um problema ambiental e que no nosso caso é representado pelo lixo.

Podemos perceber que em todas as classes são implementadas a Interface, que em Java funciona como um “contrato” de operação entre duas ou mais classes, onde uma assume o papel de consumidora e a outra(s) assume(m) o papel de fornecedora. Ou seja, a Interface acaba sendo um recurso muito utilizado em Java que define ações que devem ser obrigatoriamente executadas, mas que cada classe pode executar de forma diferente.

No caso do nosso programa, foi implementada a Interface “Runnable”, que possui um método abstrato run(), que deve obrigatoriamente ser implementado pela subclasse para que possa ser instanciada, o que foi o caso. A interface “Runnable define os métodos/operações necessarios para objetos que serão utilizados/processados por objetos da classe Thread.

A classe Thread, do pacote java long, pode ser utilizada quando se for necessário executar duas ou mais funcionalidade do sistema concorrentemente(em paralelo). Portanto, podem surgir situações na qual a classe que você quer implementar como uma Thread já estender outra classem, assim, a solução é implementar a interface “Runnable”. A classe Thread possui um constutor que recebe um objeto do tipo Runnable e que é necessário para poder executar indiretamente a subclasse Runnable.

Ex: Thread t = newThread(executavel);

executavel.run();

Assim, Interfaces são usadas na linguagem Java para definir um conjunto de funcionalidades necessários a uma classe que implemente a interface. Diferentemente da extensão de classes bases, uma classe pode implementar tantas interfaces forem necessárias. Uma interface pode ser entendida como uma classe abstrata que só contém métodos abstratos (e constantes, eventualmente).

Quando uma classe implementa uma interface, ela tem que sobrescrever todos os métodos definidos na interface. Assim, as interfaces são utilizadas para criar um padrão público para itens similares. Isso permite a criação de código mais modular. A palavra chave interface é usada para criar uma interface. Observe que não é necessário utilizar o modificador abstract para classe ou para os métodos, uma vez que isso já está implícito, pelo uso da palavra chave interface.

Um outro fator que podemos observar e que foi usado no nosso programa são as Exceções. Exceções, em Java, representam situações que normalmente

10

não ocorrem e representam algo estranho e inesperado no sistema. E há como tratá-las usando as palavras try e catch.

Sempre que um método de alguma classe é passível de causar algum erro, então, podemos usar o método de tentativa - o try.

Tudo que estiver dentro do bloco try será executado até que alguma exceção seja lançada, ou seja, até que algo dê errado. Quando uma exceção é lançada, ela sempre deve ser capturada. O trabalho de captura da exceção é executado pelo bloco catch. Um bloco try pode possuir vários blocos de catch, dependendo do número de exceções que podem ser lançadas por uma classe ou método.

O bloco catch obtém o erro criando uma instância da exceção. Portanto, a sintaxe do bloco try catch é:

try {

// código a ser executado

} catch (ClasseDeExceçãoinstânciaDaExceção) {

// tratamento da exceção

}

Concluindo, As exceções são, na verdade, instâncias de classes e como qualquer classe ou objeto, podemos facilmente manipular. E, ao reparar no nosso programa, podemos perceber que todas as classes tratam as exceções da forma correta, para que não haja erro ao compilar o programa e podemos perceber que umas das utilidades proporcionadas pela orientação a objetos de Java é a facilidade em tratar possíveis erros de execução chamados de exceções.

Assim, o tratamento de exceções em Java é bem simples e sua manipulação pode ser feita de acordo com o que o programador deseja, desde tratá-la no próprio método ou lançá-la para ser tratada em um método que venha chamar o método que lança a mesma.

Outro fator que encontramos no nosso programa é o Jframe, que iremos explicar melhor.

O JFrame é uma classe do pacote javax.swing, onde o primeiro passo para criar um JFrame é importar esse pacote:

importjavax.swing.JFrame;

11

publicclassMeuNoteextendsJFrame {

...

} A partir da criação do JFrame, conseguimos manipular as janelas criadas do programa e a inserção das imagens colocadas, pois o JFrame é a classe do Swing que representa uma janela. O JFrame possui uma série de atributos que podem ser modificados. Um deles é a propriedade visible, alterada através do método setVisible(). Para alterar os tamanho, por exemplo, podemos usar o método setSize(intwidth, intheight).

Outros conceitos vistos no programa são: métodos construtores e como estão instanciados os objetos nas classes.

Quem faz o papel de instanciador em Java é o new. New trata de reservar memória o suficiente para o objeto e criar automaticamente uma referência a ele. Para new conseguir determinar o objeto, precisamos usar o método construtor que será usado como base para instanciar a classe e gerar o objeto. Assim, vantagem de Java é nos possibilitar uma instanciação rápida e simples, sem termos que nos preocupar com referência a endereços e alocação dinâmica de memória, pois quem trata de manipular a memória é o próprio Java.

Já, o método construtor é desenvolvido da mesma forma que uma função, a única diferença é que ele tem o mesmo nome da classe.

Isso se deve ao fato de que um objeto deve ser construído cada vez que chamamos a classe. E a responsabilidade de fazer isso é do construtor. Isso parte do princípio que podemos ter dois objetos com a mesma característica, mas que não são os mesmos objetos.Sempre que criamos uma classe, Java automaticamente vincula um método construtor padrão interno com o mesmo nome da classe, mas sem inicializar nenhum atributo.

Podemos encontrar no programa também, os métodos acessores Get e Set.

Nomeamos um método acessor com set toda vez que este método for modificar algum campo ou atributo de uma classe, ou seja, se não criarmos um método acessorset para algum atributo, isso quer dizer que este atributo não deve ser modificado.

Portanto, como o valor de um atributo da classe será modificado, não é necessário que este método retorne nenhum valor, por isso, os métodos setters são void. Porém, obrigatoriamente, eles tem que receber um argumento que será o novo valor do campo. Em outro caso, nomeamos um método acessor com get toda vez que este método for verificar algum campo ou atributo de uma classe. Como este método

12

irá verificar um valor, ele sempre terá um retorno como String, int, float, etc. Mas não terá nenhum argumento

Enfim, esses métodos são chamados de métodos acessores ou getters e setters, pois eles provêm acesso aos atributos da classe, e geralmente, se iniciam com get ou set, daí a origem de seu nome.

Na verdade, não há nada de diferente entre os métodos comuns e os métodos acessores. A única importância está no fato da orientação a objeto. Pois, sempre que formos acessar um membro em Java usaremos get ou set.

E, para finalizar, o conceito de: modificadores de acesso.

Em Java, há os modificadores de acesso: public, private, protectede default e alguns outros modificadores que não se referem a acesso: final, abastract e static. No caso do nosso programa, vemos os modificadores public, private, protect e static.  Public: Uma classe declarada como pública dá as outras classes, de todos os pacotes, acesso aos seus membros que forem públicos também. Lembre-se porém que classes de diferentes pacotes precisam ser importadas para poderem ter visibilidade (assunto para um outro post). O mesmo se aplica aos membros da classe (métodos e atributos) que se forem declarados como públicos também são visíveis em todas as classes de todos os pacotes.  Private: O membro da classe não pode ser acessado por nenhuma outra classe, quando é declarado private. Como não é visto pelas subclasses, não se aplica regras de overriding. Esse modificador não se aplica a classes, somente a seus membros (métodos e atributos) .

 Protected: Quando um membro da classe é declarado assim, ele se torna acessível por classes do mesmo pacote ou através de herança. Os membros herdados não são acessíveis a outras classes fora do pacote em que foram declarados. Você só pode usar esse modificador em métodos e atributos.

 Static:Variáveis e métodos marcados como staticpertencem à classe, ao invés de alguma instância dessa, esse modificador não se aplica a classes.

Os modificadores de acesso são padrões de visibilidade de acessos às classes, atributos e métodos. Esses modificadores são palavras-chaves reservadas pelo Java, ouseja, palavras reservadas não podem ser usadas como nome de métodos, classes ou atributos.

Para concluir, observamos que no programa o modificador de acesso mais utilizado é o protect, usado na criação dos botões, pois com a herança das classes, os atributos/métodos são acessíveis.

13

Projeto (estrutura) do programa

14

15

16

Relatório com as linhas de código do programa

Menu.java

/*

* To change this template, choose Tools | Templates

* and open the template in the editor.

*/

/**

*

* @author Juliana

*/

public class Creditos extends javax.swing.JFrame {

/**

* Creates new form Creditos

*/

publicCreditos() {

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")

17

// <editor-fold defaultstate="collapsed" desc="Generated Code">

private void initComponents() {

labelImagem = new javax.swing.JLabel();

setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);

setResizable(false);

labelImagem.setIcon(new javax.swing.ImageIcon(getClass().getResource("/mod1.GIF"))); // NOI18N

javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());

getContentPane().setLayout(layout);

layout.setHorizontalGroup(

layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

.addComponent(labelImagem, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

);

layout.setVerticalGroup(

layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

.addComponent(labelImagem, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

);

pack();

setLocationRelativeTo(null);

}// </editor-fold>

/**

18

* @paramargs 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 ex) {

java.util.logging.Logger.getLogger(Creditos.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);

} catch (InstantiationException ex) {

java.util.logging.Logger.getLogger(Creditos.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);

} catch (IllegalAccessException ex) {

java.util.logging.Logger.getLogger(Creditos.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);

} catch (javax.swing.UnsupportedLookAndFeelException ex) {

java.util.logging.Logger.getLogger(Creditos.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);

}

19

//</editor-fold>

/* Create and display the form */

java.awt.EventQueue.invokeLater(new Runnable() {

public void run() {

newCreditos().setVisible(true);

}

});

}

// Variables declaration - do not modify

privatejavax.swing.JLabellabelImagem;

// End of variables declaration

}

20

Lixo.Java

importjava.text.DecimalFormat;

importjavax.swing.JOptionPane;

/*

* To change this template, choose Tools | Templates

* and open the template in the editor.

*/

/**

*

* @author Juliana

*/

public class Lixo extends javax.swing.JFrame {

/**

* Creates new form Lixo

*/

publicLixo() {

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.

21

*/

@SuppressWarnings("unchecked")

// <editor-fold defaultstate="collapsed" desc="Generated Code">

private void initComponents() {

jLabel1 = new javax.swing.JLabel();

jLabel2 = new javax.swing.JLabel();

jLabel3 = new javax.swing.JLabel();

campoNome = new javax.swing.JTextField();

campoMoradores = new javax.swing.JTextField();

campoLixo = new javax.swing.JTextField();

botaoCadastrar = new javax.swing.JButton();

jScrollPane1 = new javax.swing.JScrollPane();

textArea = new javax.swing.JTextArea();

botaoLimpar = new javax.swing.JButton();

setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);

setTitle("Cadastrar");

setResizable(false);

jLabel1.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N

jLabel1.setText("Bairro:");

jLabel2.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N

jLabel2.setText("Quantidade de moradores:");

jLabel3.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N

22

jLabel3.setText("Quantidade de lixo: (Kg)");

campoNome.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(java.awt.event.ActionEventevt) {

campoNomeActionPerformed(evt);

}

});

botaoCadastrar.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N

botaoCadastrar.setText("Calcular");

botaoCadastrar.setCursor(new java.awt.Cursor(java.awt.Cursor.HAND_CURSOR));

botaoCadastrar.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(java.awt.event.ActionEventevt) {

botaoCadastrarActionPerformed(evt);

}

});

textArea.setEditable(false);

textArea.setColumns(20);

textArea.setRows(5);

textArea.setEnabled(false);

jScrollPane1.setViewportView(textArea);

botaoLimpar.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N

botaoLimpar.setText("Limpar");

botaoLimpar.setCursor(new java.awt.Cursor(java.awt.Cursor.HAND_CURSOR));

botaoLimpar.addActionListener(new java.awt.event.ActionListener() {

23

public void actionPerformed(java.awt.event.ActionEventevt) {

botaoLimparActionPerformed(evt);

}

});

javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());

getContentPane().setLayout(layout);

layout.setHorizontalGroup(

layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

.addGroup(layout.createSequentialGroup()

.addContainerGap()

.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

.addComponent(jScrollPane1, javax.swing.GroupLayout.Alignment.TRAILING)

.addGroup(layout.createSequentialGroup()

.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)

.addGroup(layout.createSequentialGroup()

.addComponent(jLabel2)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)

.addComponent(campoMoradores))

.addGroup(layout.createSequentialGroup()

.addComponent(jLabel3)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)

.addComponent(campoLixo))

.addGroup(layout.createSequentialGroup()

.addComponent(jLabel1)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)

24

.addComponent(campoNome, javax.swing.GroupLayout.PREFERRED_SIZE, 230, javax.swing.GroupLayout.PREFERRED_SIZE)))

.addGap(0, 0, Short.MAX_VALUE))

.addGroup(layout.createSequentialGroup()

.addComponent(botaoCadastrar, javax.swing.GroupLayout.PREFERRED_SIZE, 130, javax.swing.GroupLayout.PREFERRED_SIZE)

.addGap(18, 18, 18)

.addComponent(botaoLimpar, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))

.addContainerGap())

);

layout.setVerticalGroup(

layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

.addGroup(layout.createSequentialGroup()

.addContainerGap()

.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)

.addComponent(jLabel1)

.addComponent(campoNome, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)

.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)

.addComponent(jLabel2)

.addComponent(campoMoradores, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)

.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)

.addComponent(jLabel3)

.addComponent(campoLixo, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))

.addGap(18, 18, 18)

25

.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)

.addComponent(botaoCadastrar)

.addComponent(botaoLimpar))

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)

.addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)

.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))

);

pack();

setLocationRelativeTo(null);

}// </editor-fold>

private void campoNomeActionPerformed(java.awt.event.ActionEventevt) {

// TODO add your handling code here:

}

private void botaoCadastrarActionPerformed(java.awt.event.ActionEventevt) {

// TODO add your handling code here:

String bairro = campoNome.getText();

String lixo = campoLixo.getText();

String moradores = campoMoradores.getText();

doublemulta =0;

doublemultaMorador=0;

textArea.enable(true);

DecimalFormatformato = new DecimalFormat("R$ #,##0.00");

26

if (bairro.isEmpty() || lixo.isEmpty() || moradores.isEmpty())

JOptionPane.showMessageDialog(null, "Preencha todos os campos");

else {

doubleqtdLixo = Double.valueOf(lixo);

intqtdMoradores = Integer.valueOf(moradores);

//Para moradores até 5.000 pessoas

if(qtdMoradores< 5000){

if(qtdLixo> 100){

multa = qtdMoradores * 2;

multaMorador = multa / qtdMoradores;

}else{

multa = 0;

multaMorador = 0;

}

}

// Para moradores entre 5.000 a 10.000

if(qtdMoradores>= 5000 &&qtdMoradores< 10000){

if(qtdLixo> 180){

multa = qtdMoradores * 2;

multaMorador = multa / qtdMoradores;

}else{

multa = 0;

multaMorador = 0;

}

27

}

// Para qtddmoradores maior que 10.000

if(qtdMoradores> 10000){

if(qtdLixo> 260){

multa = qtdMoradores * 2;

multaMorador = multa / qtdMoradores;

}else{

multa = 0;

multaMorador = 0;

}

}

textArea.setText("Bairro: "+bairro +"\n" + "Quantidade de moradores: "+qtdMoradores + "\n" + "Quantidade de lixo:(Kg) "+qtdLixo + "\n" + "Multa de: "+ formato.format(multa) + "\n" + "Multa por morador: "+formato.format(multaMorador));

}

}

private void botaoLimparActionPerformed(java.awt.event.ActionEventevt) {

// TODO add your handling code here:

campoLixo.setText("");

campoMoradores.setText("");

campoNome.setText("");

textArea.setText("");

textArea.enable(false);

28

}

/**

* @paramargs 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 ex) {

java.util.logging.Logger.getLogger(Lixo.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);

} catch (InstantiationException ex) {

java.util.logging.Logger.getLogger(Lixo.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);

} catch (IllegalAccessException ex) {

java.util.logging.Logger.getLogger(Lixo.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);

} catch (javax.swing.UnsupportedLookAndFeelException ex) {

java.util.logging.Logger.getLogger(Lixo.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);

}

29

//</editor-fold>

/* Create and display the form */

java.awt.EventQueue.invokeLater(new Runnable() {

public void run() {

newLixo().setVisible(true);

}

});

}

// Variables declaration - do not modify

privatejavax.swing.JButtonbotaoCadastrar;

privatejavax.swing.JButtonbotaoLimpar;

privatejavax.swing.JTextFieldcampoLixo;

privatejavax.swing.JTextFieldcampoMoradores;

privatejavax.swing.JTextFieldcampoNome;

privatejavax.swing.JLabel jLabel1;

privatejavax.swing.JLabel jLabel2;

privatejavax.swing.JLabel jLabel3;

privatejavax.swing.JScrollPane jScrollPane1;

privatejavax.swing.JTextAreatextArea;

// End of variables declaration

}

30

Creditos.java

/*

* To change this template, choose Tools | Templates

* and open the template in the editor.

*/

/**

*

* @author Juliana

*/

public class Creditos extends javax.swing.JFrame {

/**

* Creates new form Creditos

*/

publicCreditos() {

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")

// <editor-fold defaultstate="collapsed" desc="Generated Code">

private void initComponents() {

31

labelImagem = new javax.swing.JLabel();

setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);

setResizable(false);

labelImagem.setIcon(new javax.swing.ImageIcon(getClass().getResource("/mod1.GIF"))); // NOI18N

javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());

getContentPane().setLayout(layout);

layout.setHorizontalGroup(

layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

.addComponent(labelImagem, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

);

layout.setVerticalGroup(

layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

.addComponent(labelImagem, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

);

pack();

setLocationRelativeTo(null);

}// </editor-fold>

/**

* @paramargs the command line arguments

*/

32

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 ex) {

java.util.logging.Logger.getLogger(Creditos.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);

} catch (InstantiationException ex) {

java.util.logging.Logger.getLogger(Creditos.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);

} catch (IllegalAccessException ex) {

java.util.logging.Logger.getLogger(Creditos.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);

} catch (javax.swing.UnsupportedLookAndFeelException ex) {

java.util.logging.Logger.getLogger(Creditos.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);

}

//</editor-fold>

33

/* Create and display the form */

java.awt.EventQueue.invokeLater(new Runnable() {

public void run() {

newCreditos().setVisible(true);

}

});

}

// Variables declaration - do not modify

privatejavax.swing.JLabellabelImagem;

// Endofvariablesdeclaration

}

34

Apresentação do programa em funcionamento em um computador, apresentando todas as funcionalidades pedidas e extras.

Menu Principal

1° opção do Menu Principal: Cadastrar

35

Tela de Cadastro

Cadastrando Bairro,Quantidade de Moradores e Quantidade de Lixo Localizado.

36

Tela de Resultado (Calculo da Multa)

Limpando os Campos de Dados

37

Saindo da Tela de Cadastro e Voltando para o Menu Principal

2° opção do Menu Principal: Créditos

38

Tela de Creditos (Informações pessoais e Acadêmicas dos Elaboradores)

Saindo do Sistema

39

Bibliografia:

Livros:

Java: Como Programar

Use a cabeça Java

Entendendo a dominar Java

Sites:

http://www.javaprogressivo.net/2012/08/curso-completo.html

http://www.javaparainiciantes.marcric.com/

40

Ficha de atividades Práticas Supervisionadas

...

Baixar como  txt (38.6 Kb)  
Continuar por mais 15 páginas »