A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

POO Ponto de Partida: PP Créditos: Prof. Marcelo Maia

Apresentações semelhantes


Apresentação em tema: "POO Ponto de Partida: PP Créditos: Prof. Marcelo Maia"— Transcrição da apresentação:

1 POO Ponto de Partida: PP Créditos: Prof. Marcelo Maia
Universidade Federal de Uberlândia Faculdade de Computação Bacharelado em Ciência da Computação POO Ponto de Partida: PP Créditos: Prof. Marcelo Maia

2 “Primeirão” Seja um joguinho de dados Chegada

3 Primeirão em ação

4 Mãos à obra em C

5 Solução em C Estrutura Bibliotecas a serem utilizadas
#include <stdlib.h> #include <stdio.h> typedef struct { char nome[20]; int pontos; } Jogador; int nroLimitePontos, nroJogadores; Jogador** jogadores; // Jogo void criarJogadores(); void iniciar(); int ninguemVenceu (); int jogarDado(); void mostraSituacao(int, int); int sorteiaIniciante(); // Jogador void andarJogador(Jogador*, int); int atingiuPontos(Jogador*, int); Bibliotecas a serem utilizadas Definição de um jogador Variáveis globais Funções Auxiliares

6 Grafo (árvore) de chamadas
main iniciar criarJogadores sorteiaIniciante ninguemVenceu jogarDado andarJogador mostrarSituacao atingiuPontos

7 Solução em C Programa Principal
typedef struct { char nome[20]; int pontos; } Jogador; int nroLimitePontos, nroJogadores; Jogador** jogadores; Definição de um jogador Variáveis globais int main(int argc, char *argv[]) { printf("Entre com o numero limite de pontos: "); scanf("%d",&nroLimitePontos); printf("Entre com o numero de jogadores: "); scanf("%d",&nroJogadores); criarJogadores(); iniciar(); return EXIT_SUCCESS; }

8 Solução em C Criar jogadores!
typedef struct { char nome[20]; int pontos; } Jogador; int nroLimitePontos, nroJogadores; Jogador** jogadores; Definição de um jogador Variáveis globais // Jogo void criarJogadores(); void iniciar(); int ninguemVenceu (); int jogarDado(); void mostraSituacao(int, int); int sorteiaIniciante(); // Jogador void andarJogador(Jogador*, int); int atingiuPontos(Jogador*, int); void criarJogadores () { jogadores = (Jogador**) malloc(nroJogadores*sizeof(Jogador*)); int i; for (i = 0; i < nroJogadores; i++) { jogadores[i] = (Jogador*) malloc(sizeof(Jogador)); printf("Entre com o nome do jogador %d:", (i+1)); scanf("%s", jogadores[i]->nome); jogadores[i]->pontos = 0; }

9 Solução em C Iniciar !!!! Definição de um jogador Variáveis globais
typedef struct { char nome[20]; int pontos; } Jogador; int nroLimitePontos, nroJogadores; Jogador** jogadores; Definição de um jogador Variáveis globais // Jogo void criarJogadores(); void iniciar(); int ninguemVenceu (); int jogarDado(); void mostraSituacao(int, int); int sorteiaIniciante(); // Jogador void andarJogador(Jogador*, int); int atingiuPontos(Jogador*, int); void iniciar () { int proximo = sorteiaIniciante(); while (ninguemVenceu()) { int pontos = jogarDado(); andarJogador(jogadores[proximo], pontos); mostraSituacao(proximo, pontos); if (ninguemVenceu()) proximo = (proximo+1) % nroJogadores; //proximo == (nroJogadores - 1) ? 0 : proximo + 1; } printf("O jogador %s venceu!!!!\n", jogadores[proximo]->nome);

10 Solução em C Ninguém Venceu?
typedef struct { char nome[20]; int pontos; } Jogador; int nroLimitePontos, nroJogadores; Jogador** jogadores; Definição de um jogador Variáveis globais // Jogo void criarJogadores(); void iniciar(); int ninguemVenceu (); int jogarDado(); void mostraSituacao(int, int); int sorteiaIniciante(); // Jogador void andarJogador(Jogador*, int); int atingiuPontos(Jogador*, int); int ninguemVenceu () { int i = 0; while (i < nroJogadores) { if (atingiuPontos(jogadores[i], nroLimitePontos)) return 0; i++; } return 1;

11 Solução em C Jogar Dado int jogarDado() { return (rand()%6)+1; }
typedef struct { char nome[20]; int pontos; } Jogador; int nroLimitePontos, nroJogadores; Jogador** jogadores; Definição de um jogador Variáveis globais // Jogo void criarJogadores(); void iniciar(); int ninguemVenceu (); int jogarDado(); void mostraSituacao(int, int); int sorteiaIniciante(); // Jogador void andarJogador(Jogador*, int); int atingiuPontos(Jogador*, int); int jogarDado() { return (rand()%6)+1; }

12 Solução em C Mostra Situação!
typedef struct { char nome[20]; int pontos; } Jogador; int nroLimitePontos, nroJogadores; Jogador** jogadores; Definição de um jogador Variáveis globais // Jogo void criarJogadores(); void iniciar(); int ninguemVenceu (); int jogarDado(); void mostraSituacao(int, int); int sorteiaIniciante(); // Jogador void andarJogador(Jogador*, int); int atingiuPontos(Jogador*, int); void mostraSituacao (int j, int p) { printf("O jogador %s andou %d pontos! \n A Situacao ficou assim: \n", jogadores[j]->nome, p); int i; for (i = 0; i < nroJogadores; i++) printf("O jogador %s tem %d pontos!\n", jogadores[i]->nome, jogadores[i]->pontos); printf("PAUSA\n"); getchar(); }

13 Solução em C Sorteia Iniciante.
typedef struct { char nome[20]; int pontos; } Jogador; int nroLimitePontos, nroJogadores; Jogador** jogadores; Definição de um jogador Variáveis globais // Jogo void criarJogadores(); void iniciar(); int ninguemVenceu (); int jogarDado(); void mostraSituacao(int, int); int sorteiaIniciante(); // Jogador void andarJogador(Jogador*, int); int atingiuPontos(Jogador*, int); int sorteiaIniciante () { return rand()%nroJogadores; }

14 Solução em C Andar Jogador !
typedef struct { char nome[20]; int pontos; } Jogador; int nroLimitePontos, nroJogadores; Jogador** jogadores; Definição de um jogador Variáveis globais // Jogo void criarJogadores(); void iniciar(); int ninguemVenceu (); int jogarDado(); void mostraSituacao(int, int); int sorteiaIniciante(); // Jogador void andarJogador(Jogador*, int); int atingiuPontos(Jogador*, int); void andarJogador (Jogador *j, int n) { j->pontos += n; }

15 Solução em C Atingiu Pontos?
typedef struct { char nome[20]; int pontos; } Jogador; int nroLimitePontos, nroJogadores; Jogador** jogadores; Definição de um jogador Variáveis globais // Jogo void criarJogadores(); void iniciar(); int ninguemVenceu (); int jogarDado(); void mostraSituacao(int, int); int sorteiaIniciante(); // Jogador void andarJogador(Jogador*, int); int atingiuPontos(Jogador*, int); int atingiuPontos(Jogador *j, int n) { return j->pontos >= nroLimitePontos; }

16 Modelar Primeirão em UML

17 Modelar Primeirão em UML
Será contado como presença para aula do dia 17/03 Entregar dia 24/03 (quarta-feira) Entrega individual Pode fazer na mão ou usar ferramenta (e.g., PowerPoint) Entregar em papel Usar apenas Diagrama de Classes UML

18 Solução OO Muda o raciocínio ????? Decomposição Funcional X
Decomposição de Objetos (Dados + Métodos) ?????

19 Solução OO Decomposição de Objetos
Pergunta: quais são os elementos (objetos) do problema??? Possível resposta: cada jogador, um conjunto de jogadores, dado de 6 lados o próprio jogo Você pode achar outros Os dados são aninhados jogo jogadores Cebolinha Cascão Mônica

20 Você pode achar muitas outras alternativas!!
Solução OO Abstração dos Dados Cada jogador Quantos pontos tem? Qual o nome? Muda de nome! Anda “n” casas! Atingiu “n” pontos? Dado Lança!!! Jogo Começa!! Cria jogadores!! Alguém venceu? Mostra situação Você pode achar muitas outras alternativas!!

21 Solução OO Quais os relacionamentos entre os objetos das classes
Associação? Agregação / Composição? Herança? Dependência? Lembre-se de documentar o projeto Notas


Carregar ppt "POO Ponto de Partida: PP Créditos: Prof. Marcelo Maia"

Apresentações semelhantes


Anúncios Google