PCS 3111 - LABORATÓRIO DE PROGRAMAÇÃO ORIENTADA A OBJETOS PARA A ENGENHARIA ELÉTRICA



Documentos relacionados
PCS LABORATÓRIO DE PROGRAMAÇÃO ORIENTADA A OBJETOS PARA A ENGENHARIA ELÉTRICA

Trabalho Computacional 2. Aplicativo para Gestão Financeira. Grupos: Os trabalhos devem ser feitos individualmente ou em duplas.

Configurando o Controle dos Pais no Windows Vista

Implementando uma Classe e Criando Objetos a partir dela

Algoritmos e Programação. Curso de Engenharia de Produção Prof. Ms. Rogério Cardoso rogerio.cardoso@aedu.com professor@rogeriocardoso.com.

Exercícios de Revisão Java Básico

MODELAGEM VISUAL DE OBJETOS COM UML DIAGRAMA DE CLASSES.

Programação Orientada a Objetos: Lista de exercícios #1. Bruno Góis Mateus

Conhecendo o Decoder

Usando o do-file editor Automatizando o Stata

MATERIAL DE APRESENTAÇÃO DO SCRATCH

1) Ao ser executado o código abaixo, em PHP, qual será o resultado impresso em tela?

Calculando RPM. O s conjuntos formados por polias e correias

Programação Orientada a Objetos. Introdução à Análise Orientada a Objetos (AOO)

5 - Vetores e Matrizes Linguagem C CAPÍTULO 5 VETORES E MATRIZES

Conceitos básicos da linguagem C

Passo-a-passo Oi Torpedo Empresa

Agendamento de tarefas

O QUE É A CENTRAL DE JOGOS?

ÍNDICE INTRODUÇÃO...3

LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA INTRODUÇÃO À PROGRAMAÇÃO COM C/C++ Prof. Dr. Daniel Caetano

Manual MQS. Logo após colocar essas informações abrirá a página inicial do sistema:

Aoentrar na sua cx de vc terá uma tela como a abaixo :

Início Rápido para o Templo

SOP - TADS Sistemas de Arquivos Cap 4 Tanenmbaum

Portal do Projeto Tempo de Ser

Caro participante, seja bem-vindo!!!

Computação II Orientação a Objetos

Programação Orientada a Objetos C++

Trabalho de Conclusão de Curso

Manual do Usuário CMS WordPress Versão atual: 3.0

SUMÁRIO 1. AULA 6 ENDEREÇAMENTO IP:... 2

Linguagem e Técnicas de Programação I Tipos de dados, variáveis e constantes. Prof. MSc. Hugo Souza Material desenvolvido por: Profa.

Trabalho 3: Agenda de Tarefas

Programação Orientada a Objetos e Java - Introdução. Carlos Lopes

REPRESENTAÇÃO DE DADOS EM SISTEMAS DE COMPUTAÇÃO AULA 03 Arquitetura de Computadores Gil Eduardo de Andrade

Sistemas Operacionais. Curso Técnico Integrado Profa: Michelle Nery

Curso de Informática Básica

Curso destinado à preparação para Concursos Públicos e Aprimoramento Profissional via INTERNET INFORMÁTICA AULA 11

Primeiro Passo. Na sequência, surgirá a tela de Login, onde você poderá realizar uma das seguintes tarefas:

Guia de utilização da notação BPMN

Trabalho Prático 1 Revisão de Programação, Tipos Abstratos de Dados e Combinação de Alocação Estática e Dinâmica de Memória

BearingNet - Orçamentos Contenuto

Passo a Passo do Cadastro Funcionários no SIGLA Digital

CellBus DOCUMENTO DE CASO DE USO VERSÃO (1.0)

Insight Teacher Quickstart Guide

Este trabalho tem como objetivo praticar o uso de tipos abstratos de dados e estruturas do tipo Lista.

Manual de Rotinas para Usuários. Advogados da União. Procuradoria da União no Estado do Ceará PU/CE SAPIENS. Sistema da AGU de Inteligência Jurídica

Como mandar mensagens OSC pelo Flash via Flosc

ESTENDENDO A UML PARA REPRESENTAR RESTRIÇÕES DE INTEGRIDADE

BR DOT COM SISPON: MANUAL DO USUÁRIO

MANUAL DO USUÁRIO PORTAL DO PROFESSOR

Manual do Moodle. Perfil de Aluno. Elaboração: Autor: Thiago Aparecido Gonçalves da Costa

Aula 1: Conhecendo a Calculadora

Interconexão de Redes. Aula 03 - Roteamento IP. Prof. Esp. Camilo Brotas Ribeiro cribeiro@catolica-es.edu.br

agility made possible

Introdução à Programação B Licenciatura em Engenharia Informática. Enunciado do trabalho prático. Quem quer ser milionário? 20 de Dezembro de 2007

Programando em C++ Histórico da Linguagem C

Desenhando perspectiva isométrica

Sistemas Operacionais. Prof. André Y. Kusumoto

Apontamento Técnico No. 10, Julho de 2014 Como fazer inquéritos com FrontlineSMS versão 2.2.1

Introdução a Java. Hélder Nunes

LGTi Tecnologia. Manual - Outlook Web App. Soluções Inteligentes. Siner Engenharia

Olá, Professores e Professoras. É um prazer estar aqui com vocês novamente. Sejam bem-vindos!

2 Ferramentas Utilizadas

Computadores Digitais 2. Prof. Rodrigo de Souza Couto

Roteiro do Programa e Entrada/Saída

14.1 Vetor - Problemas

O que se tem, na prática, é a utilização do protocolo TCP/IP na esmagadora maioria das redes. Sendo a sua adoção cada vez maior.

DALUA: BIBLIOTECA PARA APLICAÇÕES DISTRIBUÍDAS

Mas, como utilizar essa ferramenta tão útil e que está à sua disposição?

1 ACESSO PARA SECRETÁRIA CONFIGURAR HORÁRIOS DE ATENDIMENTO BLOQUEANDO E HABILITANDO HORÁRIOS PRÉ-DEFININDO PARÂMETROS DE

INSTITUTO PRESBITERIANO MACKENZIE COLÉGIO PRESBITERIANO MACKENZIE SP Informática Educacional

Universidade Federal de Rondônia Técnicas de Desenvolvimento de Programas Lista 4

O conteúdo deste documento é de propriedade intelectual exclusiva da GVDASA Sistemas e está sujeito a alterações sem aviso prévio.

COORDENAÇÃO DE EAD MANUAL DE UTILIZAÇÃO DO MOODLE 2.6 PERFIL ALUNO. Versão 1.0

Introdução à Programação Orientada a Objetos

Trabalho Computacional

Tanto na visão semanal como diária você tem a sua disposição algumas opções uteis que facilitarão seu dia a dia.

1. Explicando Roteamento um exemplo prático. Através da análise de uns exemplos simples será possível compreender como o roteamento funciona.

2ª Lista de Exercícios Orientação a Objetos

4.1. UML Diagramas de casos de uso

MANUAL DO SISTEMA DE MENSAGERIA EXPRESSA DOS CORREIOS

Resolução da lista de exercícios de casos de uso

Manual do Instar Mail v2.0

COMO USAR SMS ADDITIONAL TEXT EM UMA CAMPANHA ELEITORAL?

Especificação do Trabalho

Programação Orientada a Objetos. Prof. Diemesleno Souza Carvalho diemesleno@iftm.edu.br

Casos de uso Objetivo:

MINISTÉRIO DA SAÚDE. Secretária de Gestão Estratégica e Participativa da Saúde SGEP. Coordenação de Desenvolvimento dos Sistemas de Saúde - CDESS

UNIVERSIDADE FEDERAL DO AMAPÁ PRÓ REITORIA DE ADMINISTRAÇÃO E PLANEJAMENTO DEPARTAMENTO DE INFORMÁTICA. Manual do Moodle- Sala virtual

1. Introdução Instalação Baixando o arquivo Instalando Enviando SMS Configurando o Itcell sms massa...

MANUAL DA SECRETARIA

Manual do usuário Neo Protocolo Free

Manual do Usuário. Módulo: Recadastramento (Servidor) Recadastramento Anual. Versão: 0.1. Recife, Outubro de

REGISTRO DE PROJETOS

Tutorial de uso do Subversion com RapidSVN

Simulado Informática Concurso Correios - IDEAL INFO

Como enviar e receber correio eletrónico utilizando o Gmail

Transcrição:

ESCOLA POLITÉCNICA DA UNIVERSIDADE DE SÃO PAULO Departamento de Engenharia de Computação e Sistemas Digitais PCS - LABORATÓRIO DE PROGRAMAÇÃO ORIENTADA A OBJETOS PARA A ENGENHARIA ELÉTRICA EXERCÍCIO PROGRAMA 05 Resumo O EP tem como objetivo exercitar os conceitos básicos de orientação a objetos ao implementar uma rede social simples. O sistema deverá atender a especificação definida e seguir o projeto descrito neste documento. Introdução Deseja-se criar a PoliSocial, uma rede social da Poli. Esse projeto será desenvolvido incrementalmente e em dupla nos três Exercícios Programas de PCS. Por simplicidade a interface com usuário deverá ser feita em console. Para este primeiro EP a rede social deve permitir cadastrar pessoas, adicionar uma pessoa como contato, enviar mensagens para todos os contatos e curtir uma mensagem recebida. A solução deve empregar adequadamente conceitos de orientação a objetos apresentados na disciplina: classe, atributo, método, encapsulamento, coesão, acoplamento, construtor e destrutor.. Especificação A rede social deve possuir as seguintes funcionalidades: Deve ser possível cadastrar uma Pessoa. Uma pessoa deve ter um nome (string), uma data de nascimento (string) e um país de origem (string). Uma Pessoa pode adicionar uma outra Pessoa (cadastrada anteriormente na rede) como um contato. Por simplicidade não há necessidade de confirmação ao adicionar um contato. Note que se A adiciona B como contato, B não necessariamente tem A como contato. o Não permita que a pessoa se adicione como contato ou que adicione duas vezes o mesmo contato (não faça nada nesse caso). Uma Pessoa pode enviar Mensagens para todos os contatos que ela possui. Uma Mensagem tem um texto (string) e o número de vezes que ela foi curtida (int). Deve -se guardar as Mensagens que a pessoa enviou, assim como as Mensagens que ela recebeu. A Pessoa deve poder ver as mensagens enviadas e recebidas. Uma Mensagem recebida pode ser curtida. Ao fazer isso, o número de curtidas da mensagem deve ser incrementado. Não se preocupe em impedir que uma mesma pessoa curta a mesma mensagem várias vezes. Também não é necessário saber quem curtiu uma determinada mensagem o importante é só saber a quantidade de curtidas.

Por simplicidade o sistema deve ser limitado a 0 pessoas cadastradas. Portanto, uma Pessoa pode ter no máximo 9 contatos. Porém não há limitação no número de mensagens enviadas e recebidas. Projeto Para implementar essas funcionalidades você deve criar um conjunto de classes em C++ para uma solução orientada a objetos. Cada classe deve ter um arquivo de definição (.h ) e um arquivo de implementação (.cpp ). Para representar uma pessoa nesse sistema você deve criar uma classe Pessoa. Essa classe deve possuir os seguintes métodos públicos : // Cria uma pessoa Pessoa(string nome, string datadenascimento, string pais); // Destrói um objeto pessoa, destruindo todos os objetos auxiliares criados ~Pessoa(); // Métodos acessores: obtem o nome, data de nascimento e país string getnome(); string getdatadenascimento(); string getpais(); // Adiciona uma outra pessoa como contato desta pessoa void adiciona(pessoa *contato); // Envia um texto como mensagem para todos os contatos da pessoa void envia(string texto); // Recebe uma mensagem enviada por uma pessoa que tem esta pessoa como contato. // Este método é chamado pelo "envia" da pessoa que está enviando a mensagem void recebe(mensagem* m); // Obtêm a lista ligada com as mensagens recebidas ListaDeMensagens* getmensagensrecebidas(); // Obtêm a lista ligada com as mensagens enviadas ListaDeMensagens* getmensagensenviadas(); // Apresenta em tela o nome dos contatos que esta pessoa possui void vercontatos(); Defina os atributos necessários para implementar essa classe (seguindo a funcionalidade especificada) e crie métodos privados caso você deseje. Crie uma classe representando uma Mensagem. Cabe a você decidir os métodos e atributos dessa classe, assim como o que deve ser público e privado. Para guardar as Mensagens enviadas e recebidas, deve-se usar o conceito de lista ligada (assunto visto em PCS 0). Isso permitirá que possa se ter várias mensagens sem restrição de quantidade (a restrição é a memória disponível pelo seu computador). Para isso você deve implementar uma classe ListaDeMensagens, a qual deve possuir pelo menos os seguintes métodos: O mais elegante seria ter um método getcontatos que retorna um vetor com os contatos de uma pessoa. Porém, para simplificar o exercício, decidiu-se deixar um método vercontatos apenas.

// Cria uma lista ligada de mensagens ListaDeMensagens(); // Adiciona uma mensagem à lista ligada void adicionar(mensagem* m); // Obtém a cabeça da lista ligada // (Isso é necessário para varrer a lista) Elemento* getcabeca(); // Destrói a lista ligada, apagando todos os elementos criados ~ListaDeMensagens(); A classe Elemento representa um elemento da lista ligada, possuindo um ponteiro para o próximo Elemento e um valor que no caso deve ser uma Mensagem. Cabe a você decidir quais os métodos e atributos necessários para a classe Elemento. Use duas listas ligadas: uma para as mensagens enviadas e outra para as mensagens recebidas de cada Pessoa. 4 Interface com o usuário Por simplicidade, a interface com o usuário será feita em console. Sugere-se os menus apresentados no diagrama a seguir: Início Fim Escolha uma das pessoas: ) Bjarne Stroustrup ) Alan Kay ) Timothy Budd 4) Donald Knuth Digite um número ou 0 para voltar: 0 PoliSocial ----------- ) Cadastrar pessoa ) Logar como pessoa ) Terminar!= 0 e válido 0 Informe os dados da pessoa: Nome: Bjarne Stroustrup Data de nascimento: 0//950 Pais: Dinamarca Pessoa cadastrada com sucesso Mensagens enviadas ------------------ ) Olá a todos! ) Ainda estou projetando C++ Digite a mensagem: Olá a todos! Mensagem enviada a todos os contatos 4 -------------------------- Pessoa: Bjarne Stroustrup 0//950 Dinamarca Contatos: Alan Kay Timothy Budd -------------------------- Escolha uma opcao: ) Adicionar contato ) Ver mensagens enviadas ) Ver mensagens recebidas 4) Escrever mensagem 0) Voltar Pessoas ------- ) Bjarne Stroustrup ) Alan Kay ) Timothy Budd 4) Donald Knuth Escolha um contato para adicionar ou 0 para voltar: 4 Bjarne Stroustrup conectado a Donald Knuth Mensagens recebidas ------------------- ) Estou usando C++ para criar um jogo ( curtidas) ) C é C++-- ( curtidas) Digite o numero da mensagem para curtir ou 0 para voltar: Mensagem curtida Cada retângulo representa uma tela. As setas representam as transições de uma tela para outra os números na seta representam o número que deve ser digitado para ir para a tela destino (quando não há um número é porque a transição acontece incondicionalmente. Em vermelho são apresentados exemplos de dados e o formato de outras informações podem ser apresentadas dependendo do estado do sistema. Por exemplo, caso não existam pessoas cadastradas e se tentar Logar como pessoa (na tela inicial), deve-se apresentar uma mensagem de erro e retornar para a tela inicial. Na figura abaixo é apresentado um exemplo de uso do programa.

5 Entrega O projeto deverá ser entregue até dia 0/09 no Moodle do Stoa. A entrega deverá ser feita por apenas um aluno por dupla. 6 Dicas Implemente a solução aos poucos não deixe para implementar tudo no final. Não é possível obter como entrada um texto com espaços usando o cin, já que ele usa o espaço ou o fim de linha como separador. Para que seja possível digitar um texto com espaços é necessário usar a função getline(entrada, variável) (é preciso fazer #include <string> para usa-la). Essa função coloca em variável o valor digitado até o \n de entrada (no nosso caso a entrada é o cin). Um cuidado ao usar essa função é que se for usado um cin anteriormente, o texto digitado e não aproveitado pode ser capturado pelo getline. Por isso é recomendável chamar o cin.ignore(quantidade, \n ), que permite ignorar uma quantidade de caracteres até chegar a um \n. Portanto, para pegar uma string com espaço em C++ é necessário fazer: string nome; cin.ignore(00, '\n'); // Ignorando caracteres que sobraram de // um cin anterior getline(cin, nome); // guardando uma linha em nome string datadenascimento; getline(cin, datadenascimento); // guardando uma linha // em datadenascimento 4

Uma forma de organizar a interface em console é criar uma ou mais classes representando as telas. O main deve chamar uma classe de tela e pedir para ela começar o programa. Para criar um vetor de objetos é necessário fazer: Pessoa* pessoas[0]; Outros detalhes sobre isso serão vistos na Aula 4 e mais profundamente na Aula. Para saber se duas variáveis têm o mesmo objeto você pode usar o ==. Não use == para comparar strings. Nos menus prefira fazer com que o usuário digite um número é muito mais fácil comparar números! Na realidade as variáveis não têm um objeto, mas apontam para um objeto. Veremos isso melhor na Aula. 5