Advertisement
Guest User

Exercicio 1 protocolos

a guest
Apr 24th, 2019
142
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Swift 4.88 KB | None | 0 0
  1. //
  2. //  main.swift
  3. //  Protocols2
  4. //
  5. //  Created by Thiago B Claramunt on 24/04/19.
  6. //  Copyright © 2019 Thiago B Claramunt. All rights reserved.
  7. //
  8.  
  9. import Foundation
  10.  
  11. enum TiposConvidado {
  12.     case digitalHouse, padrao
  13. }
  14.  
  15. enum TiposDeFogosDeArtificio {
  16.     case normal, pack
  17. }
  18.  
  19. struct DadosConvidado {
  20.     var nome: String
  21.     var email: String
  22.     var idade: Int
  23.     var tipo: TiposConvidado
  24. }
  25.  
  26. struct DadosDoEvento {
  27.     var nomeDoEvento: String
  28.     var dataDoEvento: String
  29. }
  30.  
  31. struct FogosDeArtificio {
  32.     var corFogosDeArtificio: String
  33.     var tipoDeFogos: TiposDeFogosDeArtificio
  34. }
  35.  
  36. protocol EventosFesta {
  37.     func adicionarConvidados(dadosConvidado: DadosConvidado)
  38.     func filtraConvidados(tipo: TiposConvidado) -> [Convidado]
  39.     func assoprarVela()
  40.     func comprarFogos(fogosDeArtificio: Fogos)
  41.     func explodirFogos(tipoDeFogos: TiposDeFogosDeArtificio)
  42. }
  43.  
  44. protocol Explosao {
  45.     //    func explodirFogos(tipoDeFogos: TiposDeFogosDeArtificio)
  46.    
  47. }
  48.  
  49. protocol AcoesDoConvidado {
  50.     func comerBolo() -> String
  51.     func gritar() -> String
  52. }
  53.  
  54. class Convidado: AcoesDoConvidado {
  55.     var dadosConvidado: DadosConvidado
  56.     init(dadosConvidado: DadosConvidado) {
  57.         self.dadosConvidado = dadosConvidado
  58.     }
  59.     func comerBolo() -> String {
  60.         return "Huum que bolo gostoso!"
  61.     }
  62.     func gritar() -> String {
  63.         return "Viva o Sílvio"
  64.     }
  65. }
  66.  
  67. class Fogos {
  68.    
  69.     var fogosDeArtificio: FogosDeArtificio
  70.    
  71.    
  72.     init(fogosDeArtificio: FogosDeArtificio) {
  73.         self.fogosDeArtificio = fogosDeArtificio
  74.     }
  75. }
  76. class Evento: EventosFesta {
  77.     var dadosDoEvento: DadosDoEvento
  78.     var listaDeConvidados: [Convidado] = []
  79.     var listaDeFogos: [Fogos] = []
  80.    
  81.     init(dadosDoEvento: DadosDoEvento) {
  82.         self.dadosDoEvento = dadosDoEvento
  83.        
  84.     }
  85.    
  86.     func adicionarConvidados(dadosConvidado: DadosConvidado) {
  87.         return listaDeConvidados.append(Convidado.init(dadosConvidado: dadosConvidado))
  88.     }
  89.    
  90.     func filtraConvidados(tipo: TiposConvidado) -> [Convidado] {
  91.         let lista: [Convidado] = listaDeConvidados.filter({ (convidado) -> Bool in
  92.             convidado.dadosConvidado.tipo == tipo
  93.         })
  94.         return lista
  95.     }
  96.    
  97.     func assoprarVela() {
  98.         let convidadosDigitalHouse: [Convidado] = filtraConvidados(tipo: .digitalHouse)
  99.         for convidadoDigital in convidadosDigitalHouse {
  100.             print(convidadoDigital.comerBolo())
  101.         }
  102.         for convidadoDigital in convidadosDigitalHouse {
  103.             print(convidadoDigital.gritar())
  104.         }
  105.     }
  106.    
  107.     func comprarFogos(fogosDeArtificio: Fogos) {
  108.         return listaDeFogos.append(fogosDeArtificio)
  109.     }
  110.    
  111.     func explodirFogos(tipoDeFogos: TiposDeFogosDeArtificio) {
  112.         switch tipoDeFogos {
  113.         case .normal:
  114.             let lista: [Fogos] = listaDeFogos.filter({ (fogos) -> Bool in
  115.                 fogos.fogosDeArtificio.tipoDeFogos == tipoDeFogos
  116.             })
  117.            
  118.             for _ in lista {
  119.                 print("CABUM")
  120.             }
  121.            
  122.         case .pack:
  123.             let lista: [Fogos] = listaDeFogos.filter({ (fogos) -> Bool in
  124.                 fogos.fogosDeArtificio.tipoDeFogos == tipoDeFogos
  125.             })
  126.            
  127.             for _ in lista {
  128.                 print("TCHASQUIBUM!")
  129.             }
  130.         }
  131.     }
  132. }
  133.  
  134. var silvioSantos: Evento = Evento(dadosDoEvento: DadosDoEvento.init(nomeDoEvento: "100º Aniversário do Silvio Santos", dataDoEvento: "15/03"))
  135.  
  136. var convidado1: Convidado = Convidado(dadosConvidado: DadosConvidado.init(nome: "Thiago", email: "thiago@email.com", idade: 27, tipo: TiposConvidado.digitalHouse))
  137. var convidado2: Convidado = Convidado(dadosConvidado: DadosConvidado.init(nome: "Giuliano", email: "giuliano@email.com", idade: 22, tipo: TiposConvidado.padrao))
  138. var convidado3: Convidado = Convidado(dadosConvidado: DadosConvidado.init(nome: "Thiago", email: "thiago@email.com", idade: 27, tipo: TiposConvidado.digitalHouse))
  139.  
  140. var fogos1: Fogos = Fogos(fogosDeArtificio: FogosDeArtificio.init(corFogosDeArtificio: "Azul", tipoDeFogos: .normal))
  141. var fogos2: Fogos = Fogos(fogosDeArtificio: FogosDeArtificio.init(corFogosDeArtificio: "Amarelo", tipoDeFogos: .pack))
  142. var fogos3: Fogos = Fogos(fogosDeArtificio: FogosDeArtificio.init(corFogosDeArtificio: "Branco", tipoDeFogos: .pack))
  143.  
  144. silvioSantos.comprarFogos(fogosDeArtificio: fogos1)
  145. silvioSantos.comprarFogos(fogosDeArtificio: fogos2)
  146. silvioSantos.comprarFogos(fogosDeArtificio: fogos3)
  147.  
  148. silvioSantos.explodirFogos(tipoDeFogos: .normal)
  149. silvioSantos.explodirFogos(tipoDeFogos: .pack)
  150.  
  151. silvioSantos.adicionarConvidados(dadosConvidado: convidado1.dadosConvidado)
  152. silvioSantos.adicionarConvidados(dadosConvidado: convidado2.dadosConvidado)
  153. silvioSantos.adicionarConvidados(dadosConvidado: convidado3.dadosConvidado)
  154.  
  155. silvioSantos.assoprarVela()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement