Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //
- // main.swift
- // Protocols2
- //
- // Created by Thiago B Claramunt on 24/04/19.
- // Copyright © 2019 Thiago B Claramunt. All rights reserved.
- //
- import Foundation
- enum TiposConvidado {
- case digitalHouse, padrao
- }
- enum TiposDeFogosDeArtificio {
- case normal, pack
- }
- struct DadosConvidado {
- var nome: String
- var email: String
- var idade: Int
- var tipo: TiposConvidado
- }
- struct DadosDoEvento {
- var nomeDoEvento: String
- var dataDoEvento: String
- }
- struct FogosDeArtificio {
- var corFogosDeArtificio: String
- var tipoDeFogos: TiposDeFogosDeArtificio
- }
- protocol EventosFesta {
- func adicionarConvidados(dadosConvidado: DadosConvidado)
- func filtraConvidados(tipo: TiposConvidado) -> [Convidado]
- func assoprarVela()
- func comprarFogos(fogosDeArtificio: Fogos)
- func explodirFogos(tipoDeFogos: TiposDeFogosDeArtificio)
- }
- protocol Explosao {
- // func explodirFogos(tipoDeFogos: TiposDeFogosDeArtificio)
- }
- protocol AcoesDoConvidado {
- func comerBolo() -> String
- func gritar() -> String
- }
- class Convidado: AcoesDoConvidado {
- var dadosConvidado: DadosConvidado
- init(dadosConvidado: DadosConvidado) {
- self.dadosConvidado = dadosConvidado
- }
- func comerBolo() -> String {
- return "Huum que bolo gostoso!"
- }
- func gritar() -> String {
- return "Viva o Sílvio"
- }
- }
- class Fogos {
- var fogosDeArtificio: FogosDeArtificio
- init(fogosDeArtificio: FogosDeArtificio) {
- self.fogosDeArtificio = fogosDeArtificio
- }
- }
- class Evento: EventosFesta {
- var dadosDoEvento: DadosDoEvento
- var listaDeConvidados: [Convidado] = []
- var listaDeFogos: [Fogos] = []
- init(dadosDoEvento: DadosDoEvento) {
- self.dadosDoEvento = dadosDoEvento
- }
- func adicionarConvidados(dadosConvidado: DadosConvidado) {
- return listaDeConvidados.append(Convidado.init(dadosConvidado: dadosConvidado))
- }
- func filtraConvidados(tipo: TiposConvidado) -> [Convidado] {
- let lista: [Convidado] = listaDeConvidados.filter({ (convidado) -> Bool in
- convidado.dadosConvidado.tipo == tipo
- })
- return lista
- }
- func assoprarVela() {
- let convidadosDigitalHouse: [Convidado] = filtraConvidados(tipo: .digitalHouse)
- for convidadoDigital in convidadosDigitalHouse {
- print(convidadoDigital.comerBolo())
- }
- for convidadoDigital in convidadosDigitalHouse {
- print(convidadoDigital.gritar())
- }
- }
- func comprarFogos(fogosDeArtificio: Fogos) {
- return listaDeFogos.append(fogosDeArtificio)
- }
- func explodirFogos(tipoDeFogos: TiposDeFogosDeArtificio) {
- switch tipoDeFogos {
- case .normal:
- let lista: [Fogos] = listaDeFogos.filter({ (fogos) -> Bool in
- fogos.fogosDeArtificio.tipoDeFogos == tipoDeFogos
- })
- for _ in lista {
- print("CABUM")
- }
- case .pack:
- let lista: [Fogos] = listaDeFogos.filter({ (fogos) -> Bool in
- fogos.fogosDeArtificio.tipoDeFogos == tipoDeFogos
- })
- for _ in lista {
- print("TCHASQUIBUM!")
- }
- }
- }
- }
- var silvioSantos: Evento = Evento(dadosDoEvento: DadosDoEvento.init(nomeDoEvento: "100º Aniversário do Silvio Santos", dataDoEvento: "15/03"))
- var convidado1: Convidado = Convidado(dadosConvidado: DadosConvidado.init(nome: "Thiago", email: "thiago@email.com", idade: 27, tipo: TiposConvidado.digitalHouse))
- var convidado2: Convidado = Convidado(dadosConvidado: DadosConvidado.init(nome: "Giuliano", email: "giuliano@email.com", idade: 22, tipo: TiposConvidado.padrao))
- var convidado3: Convidado = Convidado(dadosConvidado: DadosConvidado.init(nome: "Thiago", email: "thiago@email.com", idade: 27, tipo: TiposConvidado.digitalHouse))
- var fogos1: Fogos = Fogos(fogosDeArtificio: FogosDeArtificio.init(corFogosDeArtificio: "Azul", tipoDeFogos: .normal))
- var fogos2: Fogos = Fogos(fogosDeArtificio: FogosDeArtificio.init(corFogosDeArtificio: "Amarelo", tipoDeFogos: .pack))
- var fogos3: Fogos = Fogos(fogosDeArtificio: FogosDeArtificio.init(corFogosDeArtificio: "Branco", tipoDeFogos: .pack))
- silvioSantos.comprarFogos(fogosDeArtificio: fogos1)
- silvioSantos.comprarFogos(fogosDeArtificio: fogos2)
- silvioSantos.comprarFogos(fogosDeArtificio: fogos3)
- silvioSantos.explodirFogos(tipoDeFogos: .normal)
- silvioSantos.explodirFogos(tipoDeFogos: .pack)
- silvioSantos.adicionarConvidados(dadosConvidado: convidado1.dadosConvidado)
- silvioSantos.adicionarConvidados(dadosConvidado: convidado2.dadosConvidado)
- silvioSantos.adicionarConvidados(dadosConvidado: convidado3.dadosConvidado)
- silvioSantos.assoprarVela()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement