Acesse o Python Progressivo offline: Apostila em PDF
O que é Composição em Python
Porém, existem uma porção de outros objetos nesta empresa.
Aliás, vamos chamar a empresa de uma classe, a Empresa.
O que tem dentro dela?
Setores: RH, TI, Secretaria etc
Pessoas: Funcionários, Terceirizados etc
Local físico: Escritórios, Banheiros, Copa etc
Material: Móveis, Armários, folhas, canetas etc
Note uma coisa dentro dela: Funcionários.
Sim, Empresa é uma classe, e tem dentro dela outra classe, a Funcionario.
Podemos tratar o setor de RH e TI como classes também, e todos os demais exemplos acima.
Sua empresa é um objeto de classe Empresa que trabalha junto com o objeto Correios, por exemplo.
Podemos criar a classe Almoxarifado para lidar com material, onde por exemplo, cartucho de tinta ou caneta seriam objetos dessa classe.
Ou seja, na verdade, o nosso mundo é um punhado de objetos, compostos de outros objetos dentro, além de lidar com outros objetos de fora.
Damos a isso o nome de composição: combinação de objetos, quando instanciamos objetos de uma classe dentro de outra, quando usamos objetos de uma classe dentro de outros objetos.
Vamos ver um exemplo real de situação e código, para entendermos melhor o que é composição na prática.
Exemplo de Composição em Python
Vamos usar novamente nossa classe Funcionario.Para contratar um funcionário, você deve instanciar um objeto e passar uma string com o nome dele, e o método __init__ já cria o objeto com o nome do funcionário.
Vamos criar outro método, o retornaNome, que retorna o nome do funcionário.
Agora vamos abrir uma empresa!
Vamos criar a classe Empresa que vai representar nossa firma em funcionamento.
Ela vai ter uma lista de funcionários, a func. Inicializamos essa variável como uma lista vazia, e a medida que formos contratando, vamos adicionando funcionários nele. E quem são esses? Objetos da classe Funcionario, ou seja, vamos estar fazendo composição!
Assim que o objeto da classe Empresa é criado, o método __init__ é executado.
Dentro dele vamos colocar um looping infinito ( while True), afinal, nossa empresa está sempre em funcionamento.
Perguntamos se o usuário deseja contratar alguém ou apenas ver a lista de funcionários.
Se ele desejar contratar, invocamos o método contratar(), que vai pedir um nome (variável nome) do funcionário, criar um objeto da classe Funcionario: Funcionario( nome ) e vai colocar esse funcionário na nossa lista: func.append( Funcionario(nome) )
Prontinho, funcionário contratador.
Se quiser ver todos os funcionários da sua empresa, basta digitar 2, que vai chamar o método exibir(), que simplesmente vai pegar a lista func de funcionários, ir em cada objeto dessa lista e executar o método retornaNome(), que vai exibir o nome de cada funcionário de sua empresa.
Prontinho. Agora, para criar nossa empresa, basta instanciar um objeto dela e o __init__ já vai fazer tudo:
Empresa()
Veja como ficou nosso código Python:
class Funcionario: def __init__(self, nome): self.__nome = nome def retornaNome(self): return self.__nome class Empresa: func = [] def __init__(self): print("Empresa Tabajara em funcionamento") while True: print("1. Contratar") print("2. Exibir lista de funcionarios") op=int( input() ) if op==1: self.contratar() elif op==2: self.exibir() else: print("Opçao invalida") def contratar(self): nome = input("Nome: ") self.func.append( Funcionario(nome) ) def exibir(self): for funcionario in self.func: print(funcionario.retornaNome()) Empresa()Veja aqui como obter seu certificado do curso de Python e se tornar um programador profissional: Como trabalhar com Python
adogooooo!!!
ResponderExcluirgostei
ResponderExcluir