Neste Repositorio temos as listas de exercícios, feitas em grupo, durante a disciplina de Programação Orientada a Objetos (SCC0604), lecionada pelo Professor Robson Leonardo Ferreira Cordeiro, para o curso de Engenharia de Computação - USP São Carlos.
- Asafe Henrique de França - 12745212 (A partir da Lista 2)
- Isaac Santos Soares - 12751713
- Nicholas Estevao Pereira de Oliveira Rodrigues Braganca - 12689616
Composta por 3 exercícios onde devemos utilizar da linguagem UML para criarmos nossos projetos de classes e depois implementar esses projetos em C++ ou Java.
No exercício 1 devemos imgainar quais atributos e funções definem um telefone, sendo que esse telefone é composto por CPU, Tela, Sistema de Som e Sistema de Comunicação. Cada classe cujo o telefone é composto deve ter no mínimo 2 funcionalidaes uma pública e uma privada.
No exercício 2 devemos imaginar quais atributos e funções definem um driver e implementar drivers para dispositivos de rede, de impressão e de vídeo. Todo driver possui funcionalidades e dados como ligaDispositivo, verificaStatus e executaTeste. Mas cada driver para um dispositivo específico possui funcionalidades específicas, como enviaPacoteDeDados, imprimePaginas e alteraBrilhoDeExibicao.
No exercio 3 devemos implementar uma classe capaz de definir polinômios do tipo P(x) = anxn + a(n-1)x(n-1) + ... + a1x1 + a0x0. Cada termo do polinômio deve ser representado como um objeto de uma classe Termo. A classe Polinomio deve possuir os seguintes métodos:
- um construtor que recebe o grau máximo do polinômio;
- um método Add que adiciona um termo anxn, o qual deve garantir que o grau máximo do polinômio seja respeitado; caso um termo adicionado anxn já exista, ele deverá ser somado ao termo já existente somando-se os valores de seus coeficientes (an_existente + an_novo);
- um método Mostra que exibe o polinômio;
- um método Calcula que recebe um valor de x e retorna o valor calculado.
OBS: Para cada um dos exercícios a seguir, foi usado a ferramenta StarUML para criar o diagrama de classes, e exportado o código para a linguagem Java, e foi criado um projeto NetBeans para ele. A implementação das funcionalidades do sistema não era obrigaória a menos que explicitado. Todos os projetos compilam e executam (mesmo os que não fazem nada).
No exercício 1 foi feita a modelagem em UML de um sistema bancário, relacionando o modelo à administração de contas bancárias.
Em um banco:
- há gerentes, cada um responsável por um grupo de clientes;
- um gerente poderá aceitar pedidos de produtos: conta bancária, empréstimo ou cartão de crédito;
- cada cliente poderá ter acesso à sua conta bancária a qual é exclusiva para ele;
- cada conta bancária poderá oferecer serviços tais como: depositar, sacar e transferir dinheiro entre contas;
- o banco só pode manter dados de um cliente caso ele possua algum produto.
No exercicio 2 foi feita a modelagem em UML de um sistema de controle de cursos de informática equivalente a um módulo de matrícula de acordo com os seguintes fatos:
- o curso pode ter mais de uma turma, no entanto, uma turma se relaciona exclusivamente com um único curso;
- uma turma pode ter diversos alunos matriculados, no entanto uma matrícula refere-se exclusivamente a uma determinada turma;
- cada turma tem um número mínimo de 10 matriculas para iniciar o curso;
- um aluno pode realizar muitas matrículas, mas cada matrícula refere-se exclusivamente a uma turma específica e a um único aluno.
No exercício 3 foi considerado o seguinte diagrama no qual há uma hierarquia de classes Personagem=>SuperHeroi e Personagem=>Vilao; e uma agregação da classe Personagem com a classe Superpoder, isto é, um personagem pode ter nenhum ou vários superpoderes.
Para a implementação do projeto em Java descrito no diagrama a cima além de acrescentar as seguintes características:
- uma propriedade (atributo) vida em Personagem que registre a quantidade de energia que ele ainda possui – crie os métodos de acesso (get e set) adequados para a propriedade;
- um método para adicionar superpoderes aos personagens;
- um método atacar para os personagens, o qual deve receber como parâmetro a “intensidade do ataque”, o nome do superpoder usado, o qual deve existir, e um objeto Personagem que irá receber o ataque;
- este método deverá tirar (subtrair) “intensidade do ataque” da vida do personagem atacado com probabilidade de 50%. Para tanto, use o método Math.random().
Após a implementação tivemos que criar diferentes superpoderes, cada um com um fator multiplicador para a intensidade, além de definir superpoderes de defesa capazes de anular determinados ataques e definir diferentes interações de probabilidade de acordo com os personagens envolvidos.
No exercício 4 foi feita a modelagem em UML de um sistema de reserva para uma empresa aérea. Onde:
- cada voo deverá estar cadastrado no sistema, pois as reservas serão relacionadas a eles;
- uma reserva também possui um passageiro;
- os voos podem ser internacionais, nacionais, comerciais ou militares;
- a um dado voo são atribuídos um código, um horário e uma data, além de um aeroporto de partida e um de destino;
- também deve-se saber o número de assentos livres e sua tripulação (conjunto de aeroviários);
- um aeroporto possui uma cidade onde se localiza, uma capacidade (número máximo) de decolagens por hora e um nome;
- operadores são funcionários da empresa responsáveis pela operacionalização das reservas;
- eles fazem reservas e cancelam reservas;
- os passageiros podem pedir reservas nos voos, podem cancelar reservas e podem pagar as reservas.
No exercício 5 foi feita a modelagem em UML e implementação em Java utilizando a descrição a abaixo.
Um software de cálculo matemático possui diversas funcionalidades. Uma delas se refere a operação matemática entre dois operandos (float), a qual pode ser: soma, subtração, multiplicação ou divisão. A operação matemática possui a função “realizar cálculo” que retorna o resultado da respectiva operação. O resultado da operação é descrito pelas seguintes informações: usuário que realizou a operação; o tipo da operação; além da data (dia, mês e ano) da operação. Um usuário é descrito por seu nome, idade e foto. Uma foto possui o caminho do arquivo de foto do usuário e a data da foto (dia, mês e ano). Em sua implementação Java, no programa principal, crie alguns objetos do seu modelo, realize algumas operações e exiba dados dos resultados.