Linguagens de Programação Departamento de Engenharia Eletrônica e de Computação - DEL-Poli/UFRJ Prof.: Miguel Elias Mitre Campista

Documentos relacionados
Linguagens de Programação Departamento de Engenharia Eletrônica e de Computação - DEL-Poli/UFRJ Prof.: Miguel Elias Mitre Campista

Linguagens de Programação Departamento de Engenharia Eletrônica e de Computação - DEL-Poli/UFRJ Prof.: Miguel Elias Mitre Campista

== Exercícios 3 == == Respostas ==

Linguagens de Programação Departamento de Engenharia Eletrônica e de Computação - DEL-Poli/UFRJ Prof.: Miguel Elias Mitre Campista

Linguagem de Programação C++

Construtores. Introdução

Computação I - C Prova /10/ Profs. Adriano Cruz e Valeria Bastos

Linguagem de Programação Orientada a Objeto Construtores e Sobrecarga

Programação Orientada a Objetos para Redes de Computadores

Programação Orientada a Objetos para Redes de Computadores. Empacotador de Pré-processador. Empacotador de. Primeiro Exemplo Usando Classes em C++

Aula 6 POO 1 Construtores. Profa. Elaine Faria UFU

Programação de Computadores II

Algoritmos e Programação 2. Objetos e Classes em Java. Classes. Revisão. Definições de classes incluem (geralmente):

Estrutura de Dados Funções e Procedimentos

CMP Técnicas de Programação 2 a Lista de Exercícios - Passagem de parâmetros por referência e ponteiros Max Gontijo de Oliveira

Linguagens de Programação

CIÊNCIA DA COMPUTAÇÃO - LINGUAGEM DE PROGRAMAÇÃO II REVISÃO POO

Algoritmos e Estruturas de dados

Técnicas de Programação:

Programação Orientada a Objetos para Redes de Computadores

4ª LISTA DE EXERCÍCIOS PROJETO DE CLASSES Disciplina: PC-II

Introdução à Computação

BCC202 - Estrutura de Dados I

13/11/15. Incrementando C: C++ E na especificação de BigInt... Arquitetura da solução exemplo. O arquivo de declarações. Explorando a classe BigInt

Linguagem de Programação II Implementação

Programação Orientada a Objetos para Redes de Computadores

PCS Laboratório de Programação Orientada a Objetos 1a. Prova. 02 de Setembro de 2015

Parte IV. Linguagens de Programação. Relembrando da Última Aula... Empacotador de Préprocessadores. Primeiro Exemplo Usando Classes em C++

Linguagens de Programação

DAS5102 Fundamentos da Estrutura da Informação

Fundamentos de Programação

Fundamentos de Programação 2

Programação Orientada a Objetos Aula I Declaração de classes, métodos construtores. Prof.: Bruno E. G. Gomes IFRN

Linguagem de Programação C++

Gilberto A. S. Segundo. 24 de agosto de 2011

LISTA DE EXERCÍCIOS 2

Linguagens de Programação

1. Faça um programa que leia uma string digitada pelo usuário e salve em um arquivo em branco.

Introdução à Programação Orientada a Objetos em C++

Aula 27: Estruturas heterogêneas e alocação dinâmica

Ponteiros. Introdução

ORIENTAÇÃO A OBJETOS SISTEMAS DE INFORMAÇÃO DR. EDNALDO B. PIZZOLATO

Curso de Programação C em Ambientes Linux Aula 05

Introdução à Programação Orientada por Objectos em Java. Enquadramento e Objectivos Abstracção Encapsulamento Herança Polimorfismo Conclusão

Alocação de Memória. Lucas Ferrari de Oliveira Professor Adjunto Universidade Federal do Paraná (UFPR)

Classes e Objetos. Prof. Fernando V. Paulovich 9 de agosto de 2010

Programação Orientada a Objetos para Redes de Computadores

Programação Estruturada Prof. Rodrigo Hausen Agregados de Dados Heterogêneos (structs)

Prof. Jhonatan Fernando

Introdução à Programação. Conceitos Básicos de Orientação a Objetos

Reinaldo Gomes Alocação Dinâmica

ponteiros INF Programação I Prof. Roberto Azevedo

Aula 24: Ponteiros e Alocação Dinâmica

Passagem de parâmetros

Aula 24 Ponteiros, vetores e structs

# Estrutura de Dados # Aula - Revisão de C/C++ na Prática. Prof. Leinylson Fontinele Pereira

Ponteiros. Baseado nos slides do Prof. Mauro.

ORIENTAÇÃO A OBJETOS SISTEMAS DE INFORMAÇÃO DR. EDNALDO B. PIZZOLATO

C com introdução a OO

Classes II. BCC Programação Orientada a Objectos(POO) Departamento de Computação - UFOP Baseado nos slides do Prof. Marco Antônio Carvalho

Ponteiros. Prof. Fernando V. Paulovich *Baseado no material do Prof. Gustavo Batista

nome = n; cargo = c; salario = s; public void print() { System.out.println(nome cargo salario); public void aumento( double fator){

Aula 25: Alocação Dinâmica

Computação 2. Aula Profª. Fabiany Listas Duplamente Encadeadas

FICHA 8 PILHAS E FILAS

//conteúdo do arquivo Matriz.h class Matriz { private: int *elementos; int numerodelinhas; int numerodecolunas; void setnumerodelinhas(int); void

Aula 12: Funções. CI208 - Programação de Computadores. Prof. MSc. Diego Roberto Antunes

Módulo 5. Programação Orientada a Objetos. Programação Orientada a Objetos I Java (Rone Ilídio)

Universidade Federal de Uberlândia Faculdade de Computação. Linguagem C: ponteiros e alocação dinâmica

1 Introdução e Conceitos básicos

Introdução a classes e objetos. Prof. Marcelo Roberto Zorzan Prof a. Rachel Reis

Introdução a Programação. Tipos Estruturados de Dados

Programação II. Listas Encadeadas (Linked Lists) Bruno Feijó Dept. de Informática, PUC-Rio

Programação II. Vetor de Tipo Estruturado e Vetor de Ponteiros. Bruno Feijó Dept. de Informática, PUC-Rio

Programação de Computadores II. Cap. 5 Vetores

Programação II. Busca em Vetor (search) Bruno Feijó Dept. de Informática, PUC-Rio

Programação. Cap. 12 Gestão de Memória Dinâmica

Programação Estruturada Prof. Rodrigo Hausen Organização e Gerenciamento de Memória

Fábio da Fontoura Beltrão Felipe Augusto Chies Lucas Fialho Zawacki Marcos Vinicius Cavinato Matheus de Carvalho Proença

Algoritmos e Estruturas de Dados

Linguagem C ponteiros

Conceitos Básicos da Programação OO

//conteúdo do arquivo pacote.h

Passagem de parâmetros

PONTEIROS E LISTAS. Kalinka Regina Lucas Jaquie Castelo Branco

Introdução ao C++ Ambientes de Desenvolvimento Avançados. 2 de Outubro de 2002 ADA / DEI - ISEP 2002/2003 1

Linguagem C: Ponteiros - Alocação Dinâmica

Linguagens de Programação

INF 1620 P1-04/10/03 Questão 1 Nome:

Programação Orientada a Objetos CLASSES E OBJETOS

Programação Orientada a Objetos para Redes de Computadores. Arrays. Arrays

Análise de Programação

CIV 2802 Sistemas Gráficos para Engenharia º Trabalho: Programação básica em C++: Classes

Vetores. IFSC/Florianópolis - Programação Orientada a Objetos + POO - prof. Herval Daminelli

Aula 20: Matrizes (Parte 2)

Introdução à Disciplina de. Adair Santa Catarina Curso de Ciência da Computação Unioeste Campus de Cascavel PR

Introdução à orientação a objetos. João Tito Almeida Vianna 18/05/2013

Vetores. IFSC/Florianópolis - Programação Orientada a Objetos + POO - prof. Herval Daminelli

Transcrição:

Linguagens de Programação Departamento de Engenharia Eletrônica e de Computação - DEL-Poli/UFRJ Prof.: Miguel Elias Mitre Campista == Laboratório 4 == 1. Escreva um programa que inicializa dois objetos da classe MeuNome, sendo que um desses objetos é constante. O construtor da classe MeuNome recebe como argumento uma string que é utilizada para inicializar um atributo privado do tipo string chamado nome. A inicialização é feita por lista de inicializadores de membro. Após a criação dos dois objetos, o método getnome é invocado na função principal para os dois objetos, retornando o valor do atributo nome para ser impresso na tela. A classe MeuNome implementa duas versões sobrecarregadas do método getnome, uma para objetos constantes e outra para objetos não-constantes. 2. Reescreva o programa anterior, alterando o tipo do atributo privado nome de string para char *. Faça todas as alterações necessárias para que o programa continue funcionando da mesma forma descrita no exercício anterior. Note apenas que a memória deve ser alocada dinamicamente para que o atributo nome possa ser inicializado com a string recebida pelo construtor. Use a função malloc para tal. Já para liberação da memória, use a função free que deve ser invocada no destrutor da classe. Caso seja necessário, utilize o método length() da classe string para saber o tamanho da string. 3. Escreva um programa de um Relógio. Para isso, crie uma classe chamada Relogio que possui cinco atributos privados: time_t hora, struct tm *infohora, int segundos, int minutos e int horas. Os tipos time_t e struct tm estão definidos no arquivo time.h que deve ser inserido. A classe Relogio ainda possui um construtor usado para acertar o horário. O horário é definido por um método chamado resethora, que usa funções também definidas no arquivo time.h. O método resethora está implementado como se segue: void Relogio::resetHora () { time (&hora); infohora = localtime (&hora); Saiba ainda que a estrutura infohora possui um campos tm_sec, tm_min e tm_hour que armazenam inteiros contendo, respectivamente o valor dos segundos, dos minutos e das horas atuais. Além do método construtor e do método resethora, a classe Relogio possui ainda métodos do tipo set e get para os atributos segundos, minutos e horas que serão usados na função principal para, respectivamente, reinicializar e obter o horário atual. Os métodos do tipo set podem ser usados em cascata e os métodos do tipo get são const. 4. Altere o programa anterior, incluindo a classe PonteiroDeRelogio. Para isso, altere a classe Relogio para que ela possua apenas objetos da nova classe PonteiroDeRelogio como atributos privados (um objeto para segundos, outro para minutos e outro para horas). A classe Relogio possui, neste exercício, um construtor que inicializa os atributos da classe PonteiroDeRelogio. Além disso, a classe Relogio oferece métodos do tipo get que retornam o valor dos

segundos, minutos e horas através de chamadas ao método gethora definido na classe PonteiroDeRelogio. A classe PonteiroDeRelogio não possui construtor-padrão. Ao invés disso, ela possui um construtor que recebe uma string usada para inicializar o atributo privado tipo. Esse atributo define o tipo do ponteiro, ou seja, se é um ponteiro para segundos, minutos ou horas. Além disso, o construtor ainda invoca o método resethora, como definido no exercício anterior, para inicializar os atributos privados time_t hora e struct tm *infohora. Por fim, a classe PonteiroDeRelogio implementa o método gethora que testa o atributo tipo para depois retornar o campo da estrutura correspondente (tm_sec, tm_min ou tm_hour) contida na estrutura infohora. == Respostas == 1. MeuNome nome ("Miguel"); const MeuNome nomeconst ("Elias"); cout << nome.getnome () << endl; cout << nomeconst.getnome () << endl; /******************************* Arquivo meunome.h ***************************/ class MeuNome { MeuNome (string); string getnome () const; string getnome (); ; string nome; /***************************** Arquivo meunome.cpp ***************************/ MeuNome::MeuNome (string n) : nome (n) { string MeuNome::getNome () const { cout << "Metodo const!" << endl;

string MeuNome::getNome () { cout << "Metodo nao-const!" << endl; 2. MeuNome nome ("Miguel"); const MeuNome nomeconst ("Elias"); cout << nome.getnome () << endl; cout << nomeconst.getnome () << endl; /***************************** Arquivo meunome.h *****************************/ class MeuNome { MeuNome (string); ~MeuNome (); char *getnome () const; char *getnome (); ; char *nome; /***************************** Arquivo meunome.cpp ***************************/ MeuNome::MeuNome (string n) : nome ((char *)malloc ((n.length () + 1)*sizeof (char))) { for (int i = 0; i < n.length (); i++) nome [i] = n [i]; nome [n.length ()]='\0'; MeuNome::~MeuNome () { free (nome); char *MeuNome::getNome () const { cout << "Metodo const!" << endl; char *MeuNome::getNome () { cout << "Metodo nao-const!" << endl;

3. Relogio relogio; // Uso dos métodos set em cascata. relogio.sethoras ().setminutos ().setsegundos (); cout << relogio.gethoras () << ":" << relogio.getminutos () << ":" << relogio.getsegundos () << endl; /***************************** Arquivo relogio.h *****************************/ #include <time.h> class Relogio { Relogio (); void resethora (); // Retorno de referência é usado para cascateamento dos métodos Relogio & setsegundos (); Relogio & setminutos (); Relogio & sethoras (); int getsegundos () const; int getminutos () const; int gethoras () const; ; time_t hora; struct tm *infohora; int segundos, minutos, horas; /**************************** Arquivo relogio.cpp ****************************/ Relogio::Relogio () { resethora (); void Relogio::resetHora () { time (&hora); infohora = localtime (&hora); Relogio & Relogio::setSegundos () { segundos = infohora->tm_sec; return *this; Relogio & Relogio::setMinutos () { minutos = infohora->tm_min; return *this; Relogio & Relogio::setHoras () {

horas = infohora->tm_hour; return *this; int Relogio::getSegundos () const { return segundos; int Relogio::getMinutos () const { return minutos; int Relogio::getHoras () const { return horas; 4. Relogio relogio; cout << relogio.gethoras () << ":" << relogio.getminutos () << ":" << relogio.getsegundos () << endl; /**************************** Arquivo ponteiro.h *****************************/ #include <time.h> class Ponteiro { Ponteiro (string); void resethora (); int gethora (); ; string tipo; time_t hora; struct tm *infohora; /*************************** Arquivo ponteiro.cpp ****************************/ #include "ponteiro.h" Ponteiro::Ponteiro (string t) : tipo (t) { resethora (); void Ponteiro::resetHora () { time (&hora); infohora = localtime (&hora); int Ponteiro::getHora () { if (!tipo.compare ("segundos")) {

return infohora->tm_sec; else if (!tipo.compare ("minutos")) { return infohora->tm_min; else if (!tipo.compare ("horas")) { return infohora->tm_hour; else { cout << "Ponteiro nao existe!" << endl; /**************************** Arquivo relogio.h ******************************/ #include "ponteiro.h" class Relogio { Relogio (); int getsegundos (); int getminutos (); int gethoras (); ; Ponteiro segundos, minutos, horas; /*************************** Arquivo relogio.cpp *****************************/ Relogio::Relogio (): segundos ("segundos"), minutos ("minutos"), horas ("horas"){ int Relogio::getSegundos () { return segundos.gethora(); int Relogio::getMinutos () { return minutos.gethora(); int Relogio::getHoras () { return horas.gethora(); /******************************************************************************/