1
resposta

[Projeto] Minha solução para o projeto

Depois de muita tentativa e erro

//Desafio 1
class Emprego {
    var nome: String
    var salario: Double
    
    init(nome: String, salario: Double) {
        self.nome = nome
        self.salario = salario
    }
}

class Gerente: Emprego {
    var departamento: String
    
    init(departamento: String, nome: String, salario: Double) {
        self.departamento = departamento
        super.init(nome: nome, salario: salario)
    }
}

let emprego = Emprego(nome: "Desenvolvedor", salario: 5350.00)
print("Emprego: \(emprego.nome), Salário: \(emprego.salario)")
let gerente = Gerente(departamento: "TI", nome: "Gabriel", salario: 7000.0)
print("Gerente: \(gerente.nome), Salário: \(gerente.salario), Departamento: \(gerente.departamento)")
//Desafio 2
class Vendedor: Emprego {
    var percentualComissao: Double
    
    init(nome: String, salario: Double, percentualComissao: Double = 0.10) {
        self.percentualComissao = percentualComissao
        super.init(nome: nome, salario: salario)
    }
    
    func calculaSalario(numeroDeVendas: Int) -> Double {
        let valorPorVenda = 50.0
        let comissaoPorVenda = valorPorVenda * percentualComissao
        let totalComissao = comissaoPorVenda * Double(numeroDeVendas)
        return salario + totalComissao
    }
}


let vendedor = Vendedor(nome: "Carlos", salario: 3000.0)
let salarioFinal = vendedor.calculaSalario(numeroDeVendas: 20)


print("Vendedor: \(vendedor.nome), Salário Base: \(vendedor.salario), Salário Final: \(salarioFinal)")

// Desafio 3
func verificaTipo(empregado: Emprego) {
    if let gerente = empregado as? Gerente {
        print("O(a) empregado(a) \(gerente.nome) é um(a) gerente e está no departamento \(gerente.departamento).")
    }else if let vendedor = empregado as? Vendedor {
        print("O(a) empregado(a) \(vendedor.nome) é um(a) vendedor.")
    }else {
        print("O(a) empregado(a) \(empregado.nome) é um(a) empregado(a) comum.")
    }
}

let empregado1 = Emprego(nome: "Carlos", salario: 3000.0)
let gerente1 = Gerente(departamento: "RH", nome: "Felipe", salario: 5000.0)
let vendedor1 = Vendedor(nome: "Daniel", salario: 2000.0)

verificaTipo(empregado: empregado1)
verificaTipo(empregado: gerente1)
verificaTipo(empregado: vendedor1)
1 resposta

Oii, Gabriel!

Parabéns por ter avançado nos desafios e compartilhado sua solução!

Desafio 1 - Registrando o empregado e gerente

Seu código para a classe Emprego e a classe Gerente tá correto e segue as instruções do desafio. A inicialização dos atributos e o uso do super.init() estão perfeitos.

Desafio 2 - Calculando o salário do vendedor

A classe Vendedor também está bem implementada. Você criou o método calculaSalario que calcula o salário final com base nas vendas, o que está correto.

Desafio 3 - Verificando tipos

A função verificaTipo tá bem implementada e faz uso correto do typecasting para verificar o tipo da instância. Os prints estão de acordo com o que foi solicitado no desafio.

Seu código está bem organizado e atende aos requisitos dos desafios. Continue praticando e explorando mais conceitos de orientação a objetos em Swift!

Um abraço e bons estudos.