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 Universidade Federal de Uberlândia Faculdade de Computação Bacharelado em Ciência da Computação.

Apresentações semelhantes


Apresentação em tema: "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."— 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

2 Primeirão Seja um joguinho de dados Chegada

3 Primeirão em ação

4 Mãos à obra em C

5 Funções Auxiliares Variáveis globais Bibliotecas a serem utilizadas Definição de um jogador Solução em C Estrutura #include 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);

6 Grafo (árvore) de chamadas main iniciar criarJogadores sorteiaInicianteninguemVenceujogarDado mostrarSituacao andarJogador atingiuPontos

7 Variáveis globais Definição de um jogador Solução em C Programa Principal typedef struct { char nome[20]; int pontos; } Jogador; int nroLimitePontos, nroJogadores; Jogador** jogadores; 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 Variáveis globais Definição de um jogador Solução em C Criar jogadores! 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); 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 Variáveis globais Definição de um jogador Solução em C Iniciar !!!! 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); 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 Variáveis globais Definição de um jogador Solução em C Ninguém Venceu? 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); int ninguemVenceu () { int i = 0; while (i < nroJogadores) { if (atingiuPontos(jogadores[i], nroLimitePontos)) return 0; i++; } return 1; }

11 Variáveis globais Definição de um jogador Solução em C Jogar Dado 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); int jogarDado() { return (rand()%6)+1; }

12 Variáveis globais Definição de um jogador Solução em C Mostra Situação! 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); 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 Variáveis globais Definição de um jogador Solução em C Sorteia Iniciante. 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); int sorteiaIniciante () { return rand()%nroJogadores; }

14 Variáveis globais Definição de um jogador Solução em C Andar Jogador ! 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); void andarJogador (Jogador *j, int n) { j->pontos += n; }

15 Variáveis globais Definição de um jogador Solução em C Atingiu Pontos? 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); int atingiuPontos(Jogador *j, int n) { return j->pontos >= nroLimitePontos; }

16 Modelar Primeirão em UML

17 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 1.Muda o raciocínio –Decomposição Funcional X –Decomposição de Objetos (Dados + Métodos) ?????

19 Solução OO 2.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ãoMônica

20 Solução OO 3.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 4.Quais os relacionamentos entre os objetos das classes Associação? Agregação / Composição? Herança? Dependência? 5.Lembre-se de documentar o projeto Notas Solução OO


Carregar ppt "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."

Apresentações semelhantes


Anúncios Google