Paradigma
da programação Orientada
a Objectos: objectos,
classes e mensagens. A linguagem Java como linguagem OO.
Definição de classes em Java. Métodos e
variáveis de classe e instância. Overloading de
métodos. Classes não instanciáveis. Hierarquia de
classes e herança. Mecanismo de herança e
criação de classes por esta via. Procura dinãmica
de métodos. Herança versus composição de
classes. Classes abstractas. Excepções. Interfaces.
Input/output, streams.
top
Terça-feira |
10:30-13:00 |
1º
Teste |
31-Março |
Anf.
2 |
11:00 |
2º
Teste |
2-Junho |
Anf.
2 |
11:00 |
Exame |
22-Junho |
Anf.
2,5 |
10:00 |
Recurso |
12-Julho |
Anf.
2-5 |
14:00 |
Entrega
trabalho |
14-Junho |
- |
- |
Número | Nome | Nota |
12221 | José Eduardo Pereira Gomes Leite | 12 |
12816 | Cristina Isabel Félix Antunes | 5 |
12867 | Patrícia Isabel Luzio Dias | 8 |
12906 | Graciana do Carmo Carapinha Mestre | 7 |
14034 | Filipe Lázaro (N.inscrito) | 7 |
14358 | Sónia Isabel Pisco Costa | 9 |
14578 | Filipe Manuel Fernandes Capucho dos Santos | 6 |
14774 | Inês Costa Rodrigues | 12 |
14912 | Cláudio Nuno Viegas Menezes | 6 |
15278 | Sérgio Miguel Barata Dias | 9 |
15399 | Ricardo Bruno Ramalho Lucas | 7 |
15437 | Ana Rita de Brito da Graça Serrano Ferreira | 3 |
15710 | Amilcar Francisco Buanga N'zau | 6 |
15884 | Paulo Jorge Fidalgo Oliveira | 8 |
16350 | Luis Miguel Rosa dos Santos Reis | 8 |
16537 | Ricardo Jose Cabaceira do Nascimento | 7 |
16629 | Rui Pedro Percheiro Salvado | 10 |
16953 | Dinis Gaspar Miranda Pereira | 8 |
17304 | Tiago João Fonseca Moleirinho | 13 |
17305 | André Marcão Teixeira | 10 |
17386 | Francisco Luís Marinho do Rosário Matias | 15 |
17483 | Jorge Nuno Terrinca Bernardo da Fonseca Tomas | 10 |
17604 | Nuno Miguel Barata Chaves | 9 |
17839 | António Pedro Leite de Carvalho | 11 |
17991 | Miguel Rui Estrela Valadas | 9 |
18212 | Diogo Luís Alves Passarinho | 11 |
18405 | Pedro Miguel Rocha Pereira Fialho | 10 |
18436 | Carlos Manuel Vieira Campiao Limpinho | 8 |
18453 | Ana Lucia da Costa Gregorio | 14 |
18459 | Tiago Luis Cruz Mangorrinha Sousa | 12 |
18503 | Mario da Silva Gusmao | 13 |
18540 | Edgar Miguel Sarinhas Marino | 3 |
18567 | Roberto dos Reis Montinho | 9 |
18575 | Marcio Rafael Rodrigues de Jesus | 6 |
18618 | Bruno Miguel Canelas Mourinha | 1 |
18628 | Claudio Manuel Frade Ramos | 3 |
18659 | Bruno Miguel da Cunha Rodrigues | 16 |
18660 | Mario Jorge Costa Mourao | 10 |
18778 | Joao Manuel dos Santos Sequeira | 6 |
18831 | Joao Carlos da Ponte Marques Taleço | 11 |
19011 | Joao Pedro Pereira Perdigao | 4 |
19281 | Rute Isabel Godinho Pias | 1 |
19286 | Rui Filipe Carriço Lopes | 1 |
19308 | Daniel Fernando Santa Bárbara Rodrigues | 1 |
19325 | Francisco José da Silva Valentim | 9 |
19339 | Fernado Luís Barradas de Morais Marcelo | 0 |
19369 | Joaquim Manuel Pereira Rocha | 6 |
19409 | Nuno Miguel Emídio Carvão | 8 |
19412 | Carlos Alberto da Encarnação Valério | 2 |
19431 | Rui Manuel Lourenço Guerreiro | 1 |
19435 | Tiago Miguel Correia dos Santos | 11 |
19508 | Liliana Isabel Grazina Rosmaninho | 4 |
19562 | Paulo Alexandre Filipe Andrade | 1 |
19586 | João Vieira Pereira Guerra | 8 |
19597 | Rui Miguel Camelo Barrenho | 3 |
19617 | Carlos Jorge Lages Xavier de Figueiredo | 3 |
19631 | João Carlos Selésio de Morais | 9 |
19688 | Bruno Alexandre Reis de Almeida | 14 |
19856 | Dinarte Ilídio Azevedo Matos | 0 |
19867 | Alexandre Miguel da Silva Carvalho da Costa Ferreira | 3 |
19892 | Ricardo Luís Catalão Machado | 1 |
19896 | Ivo Henrique Alexandrino Carapinha | 3 |
19918 | Valério Domingos Valério | 10 |
19943 | César Peralta Madeira de Jesus Mendes | 7 |
19984 | Luís Miguel Belchior Oliveira | 7 |
20019 | Vítor Hugo de Sousa Carvalho | 0 |
20046 | Ana Dulce Barreto Gonçalves | 3 |
20104 | Pedro Luís Carro Vilhena de Carvalho | 1 |
20109 | Luís Caeiro Lapa de Carvalho | 1 |
20139 | Andreia Sofia Tavares Figueiredo | 1 |
20238 | José Alberto Manteigas Moleirinho | 10 |
Aula |
Data |
Sumário |
1 |
25-Fev-2004 |
Apresentação
do professor e da disciplina; Métodos e datas de
avaliação . O paradigma da programação por Objectos. Conceitos de objecto, atributo, comportamento e mensagens. Encapsulamento de dados, modularidade, abstracção de dados e reutilização de código. Conceito de classe e instância. Tipos primitivos (em Java), variáveis e estruturas básicas de controlo (if-else, for e while). |
2 |
3-Mar-2004 |
Definição de classes em Java. Variáveis
de instância e métodos de instância. Métodos
constructores. Assinatura e 'overloading' de métodos. |
3 |
10-Mar-2004 | Criação e utilização de
packages. Regras de acessibilidade de variáveis métodos e
classes. Os modificadores public,
private e protetected. A classe Vector. Exemplos de
aplicação. |
4 |
17-Mar-2004 |
Varáveis e métodos de classe. Classes
não instanciáveis. Exemplos de aplicação. |
5 |
24-Mar-2004 |
Dia do Estudante. |
6 |
31-Mar-2004 |
Avaliação- 1º Teste. |
7 | 14-Abr-2004 | Hierarquia de
classes em Java. Noções de superclasse, subclasse,
especialização, generalizção.
Propriedades do mecanismo de Herança, Overriding de
métodos, as referências this
e super. procura
dinâmica de métodos. Exemplos de
aplicação. |
8 | 21-Abr-2004 | Classes abstractas. Exemplos. |
9 | 28-Abr-2004 | Interfaces, definição e uso. Interfaces versus
Classes abstractas. Interfaces pré-definidas no Java. A
interface Enumeration e Comparable. Exemplos. |
10 | 05-Mai-2004 | Excepcões.
Mecanismo de captação e tratamento de
excepções no Java. Exemplos. |
Aula | Data | Sumário |
1 |
25-Fev-2004 02-Mar-2004 |
Apresentação. Familiarização com
o ambiente de programação para o Java. O compilador de
Java, javac, e o interpretador java. O método main, o primeiro programa em Java,
HelloWorld.java.
Uso e experimentação dos tipos primitivos e estruturas de
controlo. Realização de uma Makefile, com os comandos compile, run e clean. |
2 |
3-Mar-2004 9-Mar-2004 |
Exercícios do livro adoptado (ex 1, pag 131) Defina e desenvolva uma classe PmMB, que apresente a funcionalidade do referido cartão (Porta Moedas Multibanco). Cada instância desta classe, deverá possuir um titular e um saldo positivo. A partir da sua criação todas as classes deverão ser capazes de responder adequadamente a um conjunto de mansagens, que correspondem às operaçãoes que podem ser realizadas com o cartão:
|
3 | 10-Mar-2004 16-Mar-2004 |
Exercício 2, pag. 132: Desenvolva uma classe FilaDeEspera, tendo por base um array(circular) que irá conter os nomes das pessoas na fila de espera. Tal fila deverá ter uma dimensão máxima. Cada instância deverá responder às seguintes mensagens:
|
4 |
17-Mar-2004 23-Mar-2004 |
Desenvolva uma
classe SetInteiros com o
comportamento de conjunto matemático. As
operações usuais de teoria de conjuntos devem ser
obviamente comtempladas na definição da classe, devendo
ser permitido:
|
5 | 31-Mar-2004 13-Abr-2004 |
Resolva o exercício 2, do 1º Teste. |
6 | 14-Abr-2004 20-Abr-2004 |
Crie um classe ParString, capaz de implementar uma
estrutura formada por um par de strings. A classe deve possuir
métodos para consultar e modificar cada uma das Strings, e
implementar os métodos, clone(),
toString() e equals(). Tendo por base a classe ParString, implemente a classe TriploString, capaz de representar triplos de strings. Implemente para esta classe os métodos que lhe permitem consultar e modificar cada uma das strings, e igualmente os métodos clone(), toString() e equals(). Exercícios 1 e 2 , pag. 182 do livro. |
7 | 21-Abr-2004 27-Abr-2004 |
Desenvolva um sistema
de
gestão de contas bancárias, capaz de realizar diversas
operações bancárias sobre contas, tendo em
atenção que existem de momento definidos três tipos
de conta: Normal, Ordenado e a Prazo. Todas as contas têm um número, um titular, uma morada, uma data de criação e um saldo. As contas normais, não permitem que o saldo seja inferior a 0. Nas contas ordenado, é possível ter um saldo negativo igual a um determinado montante, geralmente o correspondente ao ordenado mensal. As contas a prazo, rendem juros, em função do tempo que cada que cada depósito permanece na conta, juros esses definidos numa tabela própria. Sobre todas as contas pretende-se ter disponíveis as seguintes operações:
|
8 | 28-Abr-2004 4-Mai-2004 |
Continuação
do exercício da aula anterior. |
9 | 5-Mai-2004 11-Mai-2004 |
|
aula1 |
Ponto.java |
aula2 |
Contador.java, Teste.java, FilaEspera.java,TestFila.java |
aula3 |
ListaInteiros.java |
aula4 |
Triple.java, VendingMachine.java |
A loja Planície tem ao dispor dos seus clientes um distinto conjunto de produtos. O stock inclui livros, dicionários, enciclopédias, agendas, cds audio, cds de dados com jogos e aplicações, e dvds com os últimos títulos de Hollywood.
Usualmente, existem vários exemplares do mesmo produto. Importa registar a quantidade de exemplares existente e um valor mínimo, a partir do qual é necessário repor o stock.
Existem três categorias de funcionários: caixa, repositor e gerente, cada qual com o seu salário base. O salário dum funcionário não é estático estando sujeito a alterações. Um funcionário pode ser aumentado anualmente, por aumento da inflação, ou por anuidade. A tabela salarial dos funcionários desta loja é por si definida. Seja justo mas sobretudo realista. Pense em soluções que permitam o mínimo de alteralções em situações futuras.
Para funcionários e clientes, a loja precisa de registar(no mínimo) o nome, a morada, o telefone, o nº de contribuinte.
Todos (ou aluguns) produtos valem pontos, com os quais a loja da Planćie pretende recompensar os seus mais fieis clientes. O esquema de incentivos é o seguinte:
Se entre Janeiro e Maio, um cliente armezenar um total de:
200 pontos na compra de cds de música, tem direito a um bilhete(1 dia) para um conhecido festival de música que se realiza no mês de Junho;
300 ou mais pontos tem direito a um bilhete de 3 dias para o mesmo festival.
Se acumular no espaço de um ano um total de 500 pontos, em quaisquer compras terá direito a um desconto de 25% no artigo mais barato na próxima compra que fizer.
Nota: Quando um cliente usa uma oferta, o seu total de pontos volta a zero.
Use um esquema de pontos diferenciado para cada tipo de artigo, i.e. dicionários valem x pontos, livros valem y, cds de música valem z, etc. Não seja forreta, nem mãos largas na atribuição de pontos.
O seu trabalho, como já seria de esperar, é construir um package p2.loja, que lhe permita gerir a loja da Planície, nas condições enunciadas. O package deve apresentar as funcionalidades:
Para determinado produto, saber se existe em stock, quantas unidades existem e qual o seu preço;
Actualizar o preço do produto e adicionar uma quantidade de exemplares desse produto, repondo o stock;
Registar a venda de um conjunto de produtos, actualizando o stock. Os dados da venda e do cliente devem ficar registados;
Saber o número ou o valor totais dos produtos em stock;
Saber o dia de maior volume (pelo valor ou pela quantidade de produtos) de vendas. A mesma questão para um período definido entre duas datas;
Saber quais os n produtos mais vendidos. A mesma questão para um período definido entre duas datas;
Mostrar, cronologicamente, a lista de compras de um cliente, entre duas datas;
Determinar o cliente que mais gastou em compras na loja, entre duas datas;
Mostrar todas as compras registadas;
Fazer folhas de caixa diárias, onde estão registadas as compras do dia e o total em caixa. Uma folha de caixa pode ser iniciada com algum dinheiro inicial (para trocos). O total do dia não incluirá este dinheiro inicial.
Mostrar todos os dados de um cliente ou de um funcionário;
Mostrar a lista de clientes, por ordem alfabética do nome;
Adicionar um cliente ou um funcionário. Remover um funcionário;
Actualizar os dados de um cliente ou de um funcionário (morada, telefone...);
Actualizar o salário dos funcionários;
Calcular o montante total a pagar em salários a todos os funcionários da loja, descriminando o valor para cada categoria (caixa, repositor, gerente);
Após a venda de um produto, se a quantidade em stock for inferior ao mínimo estabelecido para a respectiva categoria deve ser mostrada uma mensagem de alerta e uma lista de fornecedores dessa categoria (directa ou indirectamente - exemplo relativo a CDRs: "CDRs" ou "dispositivos para armazenamento de dados");
Informar os clientes dos pontos que possuem e notificá-los caso estejam em condições de trocar os pontos pelos respectivos prémios;
As condições sobre o modo como será apresentado o trabalho serão anunciadas proximamente.
Bom trabalho.