Mudanças entre as edições de "POO29705-2019-1"
Linha 336: | Linha 336: | ||
#Implemente uma classe que representa um carro. Preveja um atributo que representa velocidade (ver nota de aula do Prof.Emerson Mello). Testar a classe no programa main. | #Implemente uma classe que representa um carro. Preveja um atributo que representa velocidade (ver nota de aula do Prof.Emerson Mello). Testar a classe no programa main. | ||
#Implemente uma classe que representa um endereço. Coloque o máximo possível de informação. Preveja um atributo que permita colocar um pequeno texto sobre a proximidade de algum local conhecido. Prever além dos métodos de acesso aos atributos, um método que permita receber como parâmetro uma palavra chave a ser procurada neste texto. Este método deve retornar um booleano indicando se a palavra chave existe no texto. | #Implemente uma classe que representa um endereço. Coloque o máximo possível de informação. Preveja um atributo que permita colocar um pequeno texto sobre a proximidade de algum local conhecido. Prever além dos métodos de acesso aos atributos, um método que permita receber como parâmetro uma palavra chave a ser procurada neste texto. Este método deve retornar um booleano indicando se a palavra chave existe no texto. | ||
+ | #Implemente uma classe que representa bandas de rock. Preveja um atributo que permita representar as canções e discos da banda. Pense na possibilidade de que destes atributos também sejam classes. | ||
=AULA 10 - Dia 03/05/2019= | =AULA 10 - Dia 03/05/2019= |
Edição das 18h50min de 25 de abril de 2019
Professor
- Eraldo Silveira e Silva (eraldo@ifsc.edu.br)
ALUNOS
- Alfredo
- Valmir
Avaliação
- 1 Prova Formal
- 1 Nota de Atividades
- 1 Projeto
OBSERVAÇÃO
- cada registro de aula coreesponde a 2HA.
AULA 1 (2ha)- Dia 25/02/2019
Plano de Ensino
- Competências
- Desenvolver Projetos Orientados a objetos
- Bases Tecnológicas
- Ciclos de desenvolvimento de software.
- Qualidade de software.
- A visão de objetos.
- Projeto orientado a objetos com auxilio computacional e linguagem UML.
- Programação orientada a objeto utilizando linguagem C++ ou Java.
- Introdução a programação para WEB.
- Acesso a banco de dados.
Revisão de Lógica de Programação e de Programação C
- Livro: Estudo Dirigido Linguagem C - Manzano
- gcc e gedit
Exemplo pg.46 do livro:
#include <stdio.h>
int main()
{
int num1,num2,soma;
printf("Entre com o primeiro número\n");
scanf("%d", &num1);
printf("Entre com o segundo número\n");
scanf("%d", &num2);
soma = num1 + num2;
printf("Valor da soma é %d\n", soma);
}
- Compilação
gcc ex1.c -o ex1
ATIVIDADES
- Ler Cap.3 do Livro e fazer todos exercícios do final. Fazer commit no github - TAREFA 1
- Ler Cap. 4.1, 4.2, 4.3 e 4.4.
AULA 2 - Dia 8/03/2019
OBJETIVOS
- Instruções de Decisão C - revisão
- Instruções de Repetição no C - revisão
- Exemplo de controle de acesso
Material de Referência
ATIVIDADE
- Finalizar leitura Cap.4 e começar a leitura Cap.5
- Fazer execícios do final do Cap.4 e postar no github - TAREFA 2 (deadline 13/03)
- Fazer execícios do final do Cap.5 e postar no github - TAREFA 3 (deadline 20/03)
AULA 3 - Dia 15/03/2019
OBJETIVOS
- Revisão conceito de Arrays
- Revisão de Funções
Exercício Inicial de Verificação
Computar a soma de N números inteiros a serem fornecidos no teclado usando o comando for. Mostrar o resultado.
Referências
https://wiki.sj.ifsc.edu.br/index.php/AULA_8_-_Programa%C3%A7%C3%A3o_1_-_Engenharia
https://wiki.sj.ifsc.edu.br/index.php/AULA_9_-_Programa%C3%A7%C3%A3o_1_-_Engenharia
https://wiki.sj.ifsc.edu.br/index.php/AULA_10_-_Programa%C3%A7%C3%A3o_1_-_Engenharia
Cap.6 e 7 do livro.
AULA 4 - Dia 22/03/2019
OBJETIVOS
- O paradigma orientado a objetos (cap.1 Bezerra)
- modelagem de sistemas de software;
- paradigma OO:classes e objetos, mensagens e abstração
- a UML
- O pŕocesso de desenvolvimento de software (cap.2 Bezerra)
- atividades típicas de um processo
- participantes do processo
- ciclos de vida
- utilização da UML
AULA 5 - Dia 29/03/2019
OBJETIVOS
- Discussão do Projeto Final
- Apresentação da BeagleBone
- Modelagem de Casos de Uso
- Modelagem de Classes
- Conceito de Associação e Generalização
- Herança e Polimorfismo
- Diagrama de Classes e Objetos
- Exemplo: Sistema de Controle de Acesso
Referências
https://beagleboard.org/getting-started
AULA 6 - Dia 5/04/2019
- Visão de Casos de Uso (discussão cap.4 do Bezerra)
TAREFA (Projeto - Fase 1)
- Elaborar lista de requisitos do Projeto de Controle de Acesso
- Elaborar Regra de Negócios
- Elaborar Diagrama de Casos de Uso
- Dividir os 14 requisitos em 2 mas propor um adicional para agregar valor.
TAREFA 2
- Ler cap.5 do Bezerra.
AULA 7 - Dia 10/04/2019
OBJETIVOS
Parte 1
- Introdução ao C++
- Classes e Objetos no C++ (ver material Prof.Sobral)
- Declaração de classes
- Criação de objetos
- Destruição de objetos
- Um exemplo
Parte 2
- Modelagem da Dinâmica do Sistema
- Diagramas de Interação, Sequência e Colaboração
- Exemplo: Controle de Acesso
Exemplo - A porta do sistema de controle de acesso
- porta.h
class forma_porta {
private:
int estado; /* 0 se fechado e 1 se aberto */
int tipoPorta; /* 0 porta de abrir, 1 de correr, 2 sanfonada */
string ambienteDaPorta;
public:
forma_porta(string nome) {
ambienteDaPorta = nome;
}
int lerEstado() {
return estado;
}
void abrirPorta();
};
- porta.cc
#include <cstring>
#include <iostream>
#include <stdio.h>
using namespace std;
#include "porta.h"
void forma_porta::abrirPorta()
{
cout << "Abrir porta do ambiente " << ambienteDaPorta << "\n";
}
class forma_porta portaCad2("cad2");
int main()
{
portaCad2.abrirPorta();
}
Aula 12.04.19
Exercício
No exemplo anterior criar dois objetos para a porta do CAD1 e do CAD2. Criar um objeto adicional chamado Controlador para acionar estas portas.
Material de Referência
- Aulas Prof.Emerson Mello
- Classes e Objetos no C++ - Prof.Sobral
- Tutorial de Agostinho Brito Jr]
- Apostila MARCELO DE OLIVEIRA JOHANN - UFRGS
- Apostila André Augusto Cesta - Unicamp
- [1]
AULA 8 - Dia 26/04/2019
OBJETIVOS
- Classes e Objetos no C++
- declaração
- construtor e destrutor; construtor default;
- implementação inline;
- private x public;
- criação dinâmica de objetos usando new e delete;
Declaração de classes
Exercício: Implementar construtor/destrutor e métodos para acessar a classe que representa uma pessoa conforme indicado abaixo. Colocar a classe em um arquivo .h. Criar localmente duas pessoas e testar os métodos no main.
class pessoa {
private:
string nome;
string data_nasc;
string cidade_nasc;
public:
pessoa(string umNome, string umaData, string umaCidade);
~pessoa();
string obtemNome();
string obtemDataNasc();
string obtemCidadeNasc();
};
</syntaxhighlight>
Criação/Destruição
https://wiki.sj.ifsc.edu.br/index.php/Introdu%C3%A7%C3%A3o_C%2B%2B#Cria.C3.A7.C3.A3o_de_objetos
Um exemplo de classe: vetor
https://wiki.sj.ifsc.edu.br/index.php/Introdu%C3%A7%C3%A3o_C%2B%2B#Um_exemplo
Material de Referência
AULA 9 - Dia 26/04/2019
OBJETIVOS
- Passagem de parâmetros
- Alocação dinâmica de memória: operadores new e delete
- Templates
Lembrete da Avaliação sobre o Projeto
A3 - Projeto Final envolvendo UML e C++
*Documentação: 30 %
*Desempenho durante o desenvolvimento: 30%
*Defesa: 40 %
Para organizar este processo vamos colocar as seguintes fases:
- FASE (Sprint) 1 - Foco principal na Concepção (link github já repassado) - Diagramas de Caso de Uso, listas de requisitos funcionais, não funcionais e regras de negócio.
- FASE 2 - Foco principal no Projeto - diagramas de classes
- FASE 3 - Foco Principal no Projeto - diagramas de sequência
- FASE 4 - Foco Principal Implementação de casos de usos selecionados
- FASE 5 - Foco Principal Implementação de casos de usos selecionados
- FASE 6 - Foco Principal Implementação de casos de usos selecionados
- FASE 7 - Foco Principal Implementação de casos de usos selecionados
- FASE 8 - Foco Principal Implementação de casos de usos selecionados
- FASE 9 - Foco Principal Teste/Implantação
- FASE 10 - Apresentação Final
Lembrete da Avaliação de Atividades
A A2 é baseada nas atividades repassadas em sala. Até o momento foram passadas 3 atividades de revisão do C. Elas não serão incluídas nesta avaliação.
Pa fins de organização vou formalizar 5 atividades de POO-C++ nomeadas da forma:
- Atividade POO-C++ 1
- Atividade POO-C++ 2
- Atividade POO-C++ 3
- Atividade POO-C++ 4
- Atividade POO-C++ 5
Atividade POO-C++ 1
NOTA: sempre organizar o código em .h e .cpp
- Implemente uma classe que representa um triângulo qualquer. A classe deve possuir um construtor que possibilite configurar os lados do mesmo.Ela deve possuir um método que retorne a área e o perímetro do triângulo além de 3 métodos para retornar e setar cada lado. Deve ser previsto um parâmetro booleano que indica se o triângulo é válido ou não. (depois veremos como poderia ser contornado este problema). Teste a criação de dois objetos no main(). Um deles deve ser criado com o operador new e outro como variável local. NÃO usar métodos inline. Prever também um método para imprimir todos os lados, a área e o perímetro, quando o triângulo for válido. Caso contrário imprimir mensagem de triângulo inválido. Se existir uma situação de triângulo inválido e for solicitado áreao ou perímetro, retornar -1,
- Implemente uma classe que representa o tempo. Da mesma forma que o anterior devem ser previstos construtor e métodos para manipular o tempo (hora de 0 a 23, minuto de 0 a 59 e segundo de 0 a 59). Fazer todos os métodos inline. Teste a classe criando dois objetos e mostrando o usu dos métodos.
- Implemente uma classe que representa um carro. Preveja um atributo que representa velocidade (ver nota de aula do Prof.Emerson Mello). Testar a classe no programa main.
- Implemente uma classe que representa um endereço. Coloque o máximo possível de informação. Preveja um atributo que permita colocar um pequeno texto sobre a proximidade de algum local conhecido. Prever além dos métodos de acesso aos atributos, um método que permita receber como parâmetro uma palavra chave a ser procurada neste texto. Este método deve retornar um booleano indicando se a palavra chave existe no texto.
- Implemente uma classe que representa bandas de rock. Preveja um atributo que permita representar as canções e discos da banda. Pense na possibilidade de que destes atributos também sejam classes.
AULA 10 - Dia 03/05/2019
OBJETIVOS
- strings em C++ (ver material Prof.Sobral)
- Lendo ou escrevendo strings em streams
- Conversão de string para tipos numéricos
- streams e arquivos
AULA 11 - Dia 10/05/2019
OBJETIVOS
- Herança de classes
AULA 12 - Dia 17/05/2019
OBJETIVOS
- Polimorfismo e Funções Virtuais
AULA 13 - Dia 23/05/2019 (projeto)
OBJETIVOS
AULA 14 - Dia 24/05/2019
OBJETIVOS
- Qualidade de Software
AULA 15 - Dia 30/06/2019 (projeto - Aula a noite)
AULA 16 - Dia 31/05/2019
OBJETIVOS
- Aspectos de Programação para Wwb usando o C++
AULA 17 - Dia 6/06/2019 (projeto - Aula a noite)
AULA 18 - Dia 7/06/2019
OBJETIVOS
- Acesso a banco de dados usando o C++
AULA 19 - Dia 13/06/2019 (projeto - Aula a noite)
AULA 20 - Dia 14/06/2019
OBJETIVOS
AULA 21 - Dia 18/06/2019 (por causa do feriado)
AULA 22 - Dia 19/06/2019 (projeto - Aula a noite)
AULA 23 - Dia 20/06/2019 (projeto - Aula a noite)
OBJETIVOS
AULA 24 - Dia 26/06/2019 (projeto aula a noite)
Previsão de 3ha
AULA 25 - Dia 27/06/2019 (projeto aula a noite)
Previsão de 3ha
AULA 26 - Dia 28/06/2019
- Apresentação do Projeto Final
OBJETIVOS
AULA 27 - Dia 5/07/2019
- Recuperação da A1
OBJETIVOS
AULA 28 - Dia 9/07/2019
- Reapresentação do Projeto