INSTITUTO SUPERIOR DE COMUNICACAO E IMAGEM DE MOCAMBIQUE
Paradigmas da Programação
Paradigma Orientado à Objetos: Java
Informatica de Sistemas
Segundo Ano
II Semestre
Relatório de: Mohammad Nazir Lorgat
Elementos do Grupo:
Osvaldo Silva
Chilton Nhabanga
Docente: Eng. Momad Naushad
Maputo, Novembro de 2015
Índice
Introdução..................................................................................................................................................4
Descrição:...................................................................................................................................................5
Prazo: 12/11//15......................................................................................................................................6
Limitacoes: 0..........................................................................................................................................6
Pseudocodigo:............................................................................................................................................6
Fluxograma................................................................................................................................................9
Código......................................................................................................................................................10
Conclusão.................................................................................................................................................22
Bibliografia..............................................................................................................................................23
2
Introdução
A orientação à objectos é um modelo 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.
Na Programação orientada à objectos, implementa’se um conjunto de classes que definem os
objectos presentes no sistema de software. Cada classe determina o comportamento (definido nos
métodos) e estados possíveis (atributos) de seus objectos, assim como o relacionamento com
outros objectos.
Java é uma linguagem que se enquadra no paradigma Orientado à objectos.
O trabalho fala sobre um sistema de gestão de um parque de estacionamento, implementado na
linguagem Java
O presente trabalho faz parte da cadeira de Paradigmas de Programação, do segundo Semestre,
do Segundo Ano, do curso de Informática de Sistemas, do ISCIM, como extra.
3
Descrição:
Um sistema simples para gerenciamento de um parque de estacionamento. No sistema temos 2
entidades, o gerente e o cliente. O cliente so tem direito a ver a tabela de precos. Para evitar
fraudes e como o sistema nao permite leitura de um “read card”, o gerente e que calcula o preco
a pagar pelo cliente.
Ao aceder o sistema, temos um menu para selecao de usuario (Cliente e Gerente). O gerente tem
direito a adicionar um cliente, apagar um cliente, modificar algum dado do cliente , listar todos
cliente e calcular preco a pagar pelo cliente.
Ao adicionar um cliente, deve preencher os seguintes atributos: Numero do cliente
(identificardor, Nao pode repetir), Nome, Marca do Automovel, Matricula do Automovel e o
Numero do Lugar de estacionamento.y
Devido a algumas limitacoes do Sistema, o nome obedece o seguinte formato: “nome_apelido”,
o mesmo aplica-se a marca do automovel: marca_modelo.
Para apagar ou alterar algum dado do cliente e Necessario ter o Numero do cliente.
A tabela de precos a pagar e a seguinte:
- 1 hora – 100 mt
- 2 horas -180 mt
- 3 horas- 270mt
- Apartir de 4 horas- 80 mt por hora.
- Os minutos extras sao arredondados para horas, mas o gerente pode descontar se quiser.
NB: o calculo das horas nao e feito no Sistema, e o preco a pagar nao vem associado a lista
dos clientes.
Prazo: 12/11//15
Limitacoes: 0.
4
Pseudocodigo:
Inicio
Selecionar Usuario
Se 1 entao MenuCliente
Selecionar accao
Se 1 entao Ver tabela de precos
Se nao sair
Se 2 entao MenuGerente
Selecionar Accao
Se 1 entao Adicionar Cliente
Digitar Numero
Digitar Nome_Apelido
Digitar Marca_Modelo
Digitar Matricula
Digitar Lugar
Guardar Cliente
Se 2 entao Apagar Cliente
Digitar numero
Apaga cliente
Se 3 entao Modificar dado
Selecionar dado a modificar
Se 1 entao modificar nome
Digitar numero
Digitar novo nome
Alterar nome
5
Se 2 entao modificar marca
Digitar numero
Digitar nova marca
Alterar marca
Se 3 entao modificar matricula
Digitar numero
Digitar nova matricula
Alterar matricula
Se 4 entao modificar lugar
Digitar numero
Digitar novo lugar
Alterar lugar
Se nao modificar cliente
Se 4 entao Ver lista de clients
Listar clientes
Se 5 entao Calcular preco a pagar
Digitar horas
Se 1 entao 100
Se 2 entao 180
Se 3 entao 270
Se nao 80*horas
Se nao MenuGerente
Fim
6
Fluxograma
7
Código
//ficheiro cliente.java
package done;
public class Cliente {
public String nome;
public String marca;
public String matricula;
public String numero;
public String codigo;
public Cliente(String codigo,String nome, String marca, String matricula, String numero){
this.nome=nome;
this.marca=marca;
this.matricula=matricula;
this. numero=numero;
this.codigo=codigo;
public Cliente() {
public void setnome(String nome){
this.nome=nome;
8
}
public void setmarca(String marca)
{ this.marca=marca; }
public void matricula(String matricula){
this.matricula=matricula;
public void setnumero_lugar(String numero_lugar){
this.numero=numero_lugar;
public String getnome(){
return this.nome;
public String getmarca()
{ return this.marca;
public String getmatricula(){
return this.matricula;
public String getnumero(){
9
return this.numero;
public String toString(){
return (codigo+" "+nome+" "+marca+" "+numero+" "+matricula);
public String toname(){
return (codigo+" "+nome+" "+marca+" "+matricula+" "+numero);
public void atribuiCodigo(int i){
this.codigo=this.codigo+i;
//ficheiro done.java
package done;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.nio.file.Files;
import java.util.LinkedList;
10
import java.util.StringTokenizer;
import javax.swing.JOptionPane;
public class Done {
// LinkedList<Cliente> cli=new LinkedList<Cliente>();\
static LinkedList<Cliente> listaLida=new LinkedList<Cliente>();
static BufferedWriter b;
static BufferedReader r;
public static void main(String[] args) {
Object[] options = { "Cliente", "Gerente" };
int choice = JOptionPane.showOptionDialog(null,
"Selecione o tipo de utilizador",
"Utilizador",
JOptionPane.YES_NO_OPTION,
JOptionPane.QUESTION_MESSAGE,
null,
options,
options[0]);
// interpret the user's choice
if (choice == JOptionPane.YES_OPTION)
11
{
JOptionPane.showMessageDialog(null,
"1 Hora --- 100MT." +"\n"+
"2 Hora --- 180MT." +"\n"+
"3 Hora --- 350MT." +"\n"+
"Apartir de 4 horas --- 60MT por hora." +"\n","Tabela de
Precos", JOptionPane.INFORMATION_MESSAGE);
else
String nome_cli=(String)JOptionPane.showInputDialog(null, "Introduza o nome
do utilizador","Nome", JOptionPane.INFORMATION_MESSAGE);
String senha=(String)JOptionPane.showInputDialog(null, "introduza a senha de
ulilizador","Senha", JOptionPane.INFORMATION_MESSAGE);
// if(nome_cli.equals("chilton")&&senha.equals("chilton")) {
// JOptionPane.showMessageDialog(null,"Dados Incorrectos","Login",
JOptionPane.INFORMATION_MESSAGE);
//}
Object[] colours = {"Adicionar", "Apagar", "Modificar", "Listar todos"};
12
int n = JOptionPane.showOptionDialog(null,
"Escolha uma opcao?",
"Menu Principal",
JOptionPane.DEFAULT_OPTION,
JOptionPane.QUESTION_MESSAGE,
null,
colours,
colours[0]);
if(colours[n]=="Adicionar"){
String codigo=(String)JOptionPane.showInputDialog(null, "Introduza o codigo do
utilizador","Codigo", JOptionPane.INFORMATION_MESSAGE);
String nome=(String)JOptionPane.showInputDialog(null, "Introduza o nome do
utilizador","Nome", JOptionPane.INFORMATION_MESSAGE);
String marca=(String)JOptionPane.showInputDialog(null, "Introduza a marca
do carro","Nome", JOptionPane.INFORMATION_MESSAGE);
String matricula=(String)JOptionPane.showInputDialog(null, "Introduza a
matricula do carro","Nome", JOptionPane.INFORMATION_MESSAGE);
String numero=(String)JOptionPane.showInputDialog(null, "Introduza o
numero do local de estacionamento","Nome", JOptionPane.INFORMATION_MESSAGE);
JOptionPane.showMessageDialog(null,"Cliente registado com
sucesso" ,"Registo", JOptionPane.INFORMATION_MESSAGE);
Cliente cliente = new Cliente(codigo,nome,marca,matricula,numero);
13
// System.out.println(cliente.getnome());
LinkedList<Cliente> cli=new LinkedList<Cliente>();
cli.addFirst(cliente);
try {
AbreEscrita("output.txt");
} catch (IOException e1) {System.out.println(" falha para abrir
escrita");}
try {
AbreEscrita("output.txt");
EscreveObjecto(cli);
} catch (IOException e1) {}}
else
if (colours[n]=="Apagar"){
String apagar=(String)JOptionPane.showInputDialog(null, "Introduza o numero
do cliente para apagar","Apagar Cliente", JOptionPane.INFORMATION_MESSAGE,null,null,"10");
try {
abreFicheiro("output.txt");
} catch (IOException e1) {
System.out.println(" erro na abertura do ficheiro");
try {
14
LinkedList<Cliente> a = LerCliente();
String va=pesquisa(a,apagar);
System.out.println(va);
fecha();
} catch (IOException e1) {
System.out.println(" erro na leitura");
else
if (colours[n]=="Modificar"){
String modificar= JOptionPane.showInputDialog(null, "Introduza o
numero do cliente para modificar","Apagar Cliente", JOptionPane.INFORMATION_MESSAGE);
else
if (colours[n]=="Listar todos"){
//Cliente r=new Cliente();
try {
abreFicheiro("output.txt");
} catch (IOException e1) {
15
System.out.println(" erro na
abertura do ficheiro");
try {
String c ="Codigo-Nome-Matricula-
Marca-numero"+"\n";
LinkedList<Cliente> a = LerCliente();
for(int i=0;i<a.size();i++){
c=c+a.get(i).toname()+"\n";
JOptionPane.showMessageDialog(null,c,"Clientes Registados",
JOptionPane.INFORMATION_MESSAGE);
fecha();
} catch (IOException e1) {
System.out.println(" erro na
leitura");
16
public static void AbreEscrita(String s) throws IOException{
b=new BufferedWriter(new FileWriter(s,true));
public static void EscreveObjecto (LinkedList<Cliente> l )throws IOException{
for(int i=0;i<l.size();i++)
{b.write(l.get(i).toString());}
b.newLine();
b.close();
public static void abreFicheiro(String path) throws IOException{
//Cliente r=new Cliente();
try{
r=new BufferedReader( new FileReader(path));}
catch(FileNotFoundException e ){System.out.println("Nao conseguiu aceder ao
ficheiro");}
17
public static String lerLinha() throws IOException{return r.readLine();}
public static LinkedList<Cliente> LerCliente() throws IOException{
String s;
try{ do{
s=lerLinha();
if(s!=null){
StringTokenizer st= new StringTokenizer(s);
String nome,marca,matricula,numero,codigo;
codigo=st.nextToken();
nome=st.nextToken(); // sem problema
marca=st.nextToken();// sem problema
matricula=st.nextToken();// sem problema
numero=st.nextToken();// sem problema
Cliente e =new Cliente(codigo,nome,marca,matricula,numero);
//e.setcodigo(cd);
18
//e.setgenero(sexo);
//e.setData_Nascimento(Data_Nascimento);
//e.setclassificacao(classificacao);//bloco anterior sem problema
listaLida.addFirst(e);
System.out.println(listaLida.get(0).marca);
}}while( s!=null );}
catch(Exception e){System.out.println("houve problema na leitura do ficheiro "+"
"+e.getMessage()+e.getCause()+e.getLocalizedMessage());}
return listaLida;
public static String pesquisa(LinkedList<Cliente> l, String apagar){
String valor ="";
for(int i=0;i<l.size();i++){
if(l.get(i).codigo==apagar )
valor=apagar; }
return valor;
19
public static void fecha(){try {
r.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}}
Conclusão
Não Participei na parte prática do trabalho, como tinha me responsabilizado de fazer os outros trabalhos,
o colega Chilton Nhabanga responsabilizou-se por fazer esse trabalho.
A nota que me dou por apenas ter dado dicas de como fazer esse sistema, ter explicado a lógica do
sistema, é 11.
Quanto a nota que dou ao colega Chilton é 17 pelo excelente trabalho que fez.
20
Bibliografia
- Apontamentos e Anotações das Aulas de Programação I e II.
21