class Aula09:
def __init__(self, Classes):
self.associação
Profs. Júnior Colares
Andriel Alexandre
RECAPITULANDO!
- AULA 08: Encapsulamento
i) Atributos privados
ii) Métodos get e set
iii) @property e @.setter
class Aluno:
def __int__(self, nome, matricula, nota):
self.__nome = nome
self.__matricula = matricula
self.__nota = nota
RECAPITULANDO!
- AULA 08: Encapsulamento
i) Atributos privados
ii) Métodos get e set
iii) @property e @.setter
def get_nome(self):
return self.__nome
def set_nome(self, novoNome):
self.__nome = novoNome
aluno = Aluno()
print(aluno.get_nome())
aluno.set_nome(novoNom
e)
RECAPITULANDO!
- AULA 08: Encapsulamento
i) Atributos privados
ii) Métodos get e set
iii) @property e @.setter
@property
def nome(self):
return self.__nome
@nome.setter
def nome(self, novoNome):
self.__nome = novoNome
aluno = Aluno()
print(aluno.nome)
aluno.nome = novoNome
Aquecimento 1:
Crie uma classe chamada Paciente que terá como atributos
encapsulados o nome, idade e cpf. A idade somente poderá ser
alterada com um método para envelhecer que, por padrão,
acrescentará um ano à idade da pessoa.
Aquecimento 2:
Crie uma classe chamada Médico que terá como atributos nome,
crm e especialidades, que será uma lista. Faça o encapsulamento
dos atributos levando em consideração que o nome e crm não
poderão ser alterados e o médico apenas pode acrescentar uma
especialidade se tiver feito uma residência na área. Por fim,
apresente as informações do médico na tela.
ASSOCIAÇÃO
Aula 09 - Associação
- Associação é uma forma de criar regras para ligações entre
objetos de classes diferentes.
- Ela pode ser de dois tipos:
- Composição
- Agregação
Aula 09 – Associação (Composição)
- Nesse tipo de associação, uma classe “maior” será responsável por
receber os parâmetros inicialização de um objeto de uma classe
menor internamente.
- Usamos a composição quando queremos delegar uma função
para outra classe.
Aula 09 – Associação (Composição)
- Exemplo:
Vamos considerar uma classe salário que tem como atributos o valor da hora,
a quantidade de horas e uma possível comissão:
class Salario:
def __init__(self, valor_hora, qtd_horas, comissao):
self.valor_hora = valor_hora
self.qtd_horas = qtd_horas
self.comissao = comissao
def calcularSalario(self):
return (self.qtd_horas * self.valor_hora) + self.comissao
Aula 09 – Associação (Composição)
Agora vamos considerar uma classe Funcionário que, além dos atributos já
pertencentes à classe Salário, também irá receber o nome, matrícula e função.
Observe que o objeto da conta salário irá ser inicializado dentro da classe
Funcionário:
class Funcionario:
def __init__(self, nome, matricula, funcao, valor_hora, qtd_horas, comissao):
self.nome = nome
self.matricula = matricula
self.funcao = função,
self.salario = Salario(valor_hora, qtd_horas, comissao)
Aula 09 – Associação (Composição)
Dessa forma, todos os atributos e métodos da classe Salário estarão
disponíveis dentro da classe funcionário, inclusive o de calcular o valor total:
funcionario = Funcionario('João', 1, 'Desenvolvedor', 55, 176, 0)
print(funcionario.matricula)
print(funcionario.nome)
print(funcionario.funcao)
print(funcionario.salario.calcularSalario())
Atividade 01:
Crie uma classe chamada Endereço que terá rua, bairro
e cidade em seu construtor.
Em seguida, crie uma classe Pessoa que terá nome,
telefone e endereço, que irá iniciar vazio.
Crie dois métodos na classe pessoa, um para informar
um endereço e outra para apresentar as informações
na tela.
Atividade 02:
Utilizando a mesma ideia da questão anterior, agora crie
uma classe Empresa que terá como atributos a razão
social, o CNPJ e uma LISTA de endereços que irá iniciar
vazia. Na classe Empresa, você deverá criar um método
que irá adicionar um endereço na lista e um que exiba
na tela todos os endereços.
Aula 09 – Associação (Agregação)
- Na associação por agregação, o objeto “menor” será inicializado
fora da classe “maior” e passado como parâmetro.
- Ou seja, utilizando o mesmo exemplo anterior, o objeto salário
deve ser inicializado fora do construtor da classe Funcionário e
passado como parâmetro.
Aula 09 – Associação (Agregação)
- Exemplo:
class Funcionario:
def __init__(self, nome, matricula, funcao, salario):
self.nome = nome
self.matricula = matricula
self.funcao = funcao
self.salario = salario
Aula 09 – Associação (Agregação)
- Exemplo:
salario = Salario(55, 176, 0)
funcionario = Funcionario('João', 1, 'Desenvolvedor', salario)
print(funcionario.matricula)
print(funcionario.nome)
print(funcionario.funcao)
print(funcionario.salario.calcularSalario())
Aula 09 – Associação (Agregação)
Observações:
- Quando fazemos associação por agregação, também criamos uma
relação de “tem um”.
- Na associação por agregação, os objetos são criados
separadamente, então não dependem um do outro para sua
existência.
- A agregação é unilateral, ou seja, se um Funcionário “tem um”
Salário, o contrário nunca será verdade.
Atividade 03:
1 - Crie uma classe chamada produto que conterá como
atributos o código, nome e valor.
2 – Crie uma classe chamada carrinho de compra que
terá como único atributo uma lista de produtos que
deve se iniciar vazia.
Atividade 03 (continuação):
3 - Crie um método para inserir produtos que receberá
um objeto por parâmetro que será incluído na lista.
4 – Crie um método para listar todos os produtos.
5 – Finalize criando um método para exibir o valor final.
Atividade 04:
Crie uma classe Pessoa que terá nome, cpf e endereço como
atributos.
Em seguida, crie uma classe Endereço que terá rua, número,
bairro e cidade como atributos.
Por fim, crie uma classe Conta Bancária que terá como
atributos, agencia, conta, saldo, favorecido e limite como
atributos e os métodos sacar, depositar, transferir e imprimir
informações.
Atividade 04 (continuação):
- Você deve usar associação por agregação onde o objeto
pessoa deverá receber um objeto endereço e o objeto
conta deverá receber uma pessoa como favorecido.
- Não esqueça de fazer as validações para saque, depósito e
transferência respeitando inclusive os limites estabelecidos.
- Agência deve ser inicializada com um valor padrão, assim
como o saldo, que deve começar zerado.
Atividade 04 (continuação):
- Para finalizar, o método de imprimir as informações deve
ser apresentado dessa forma:
Desafio:
Crie uma classe chamada Ponto que receberá dois
números identificando suas coordenadas que serão
passados para os atributos x e y.
Em seguida, crie uma classe Quadrilátero que irá
receber quatro diferentes pontos como parâmetros que
serão atribuídos a cada um dos seus vértices. Por fim,
crie um método que irá calcular o perímetro do
quadrilátero e apresenta-lo na tela.

Aula 09 - Associação de classes em POO em Python.pptx

  • 1.
    class Aula09: def __init__(self,Classes): self.associação Profs. Júnior Colares Andriel Alexandre
  • 2.
    RECAPITULANDO! - AULA 08:Encapsulamento i) Atributos privados ii) Métodos get e set iii) @property e @.setter class Aluno: def __int__(self, nome, matricula, nota): self.__nome = nome self.__matricula = matricula self.__nota = nota
  • 3.
    RECAPITULANDO! - AULA 08:Encapsulamento i) Atributos privados ii) Métodos get e set iii) @property e @.setter def get_nome(self): return self.__nome def set_nome(self, novoNome): self.__nome = novoNome aluno = Aluno() print(aluno.get_nome()) aluno.set_nome(novoNom e)
  • 4.
    RECAPITULANDO! - AULA 08:Encapsulamento i) Atributos privados ii) Métodos get e set iii) @property e @.setter @property def nome(self): return self.__nome @nome.setter def nome(self, novoNome): self.__nome = novoNome aluno = Aluno() print(aluno.nome) aluno.nome = novoNome
  • 5.
    Aquecimento 1: Crie umaclasse chamada Paciente que terá como atributos encapsulados o nome, idade e cpf. A idade somente poderá ser alterada com um método para envelhecer que, por padrão, acrescentará um ano à idade da pessoa.
  • 6.
    Aquecimento 2: Crie umaclasse chamada Médico que terá como atributos nome, crm e especialidades, que será uma lista. Faça o encapsulamento dos atributos levando em consideração que o nome e crm não poderão ser alterados e o médico apenas pode acrescentar uma especialidade se tiver feito uma residência na área. Por fim, apresente as informações do médico na tela.
  • 7.
  • 8.
    Aula 09 -Associação - Associação é uma forma de criar regras para ligações entre objetos de classes diferentes. - Ela pode ser de dois tipos: - Composição - Agregação
  • 9.
    Aula 09 –Associação (Composição) - Nesse tipo de associação, uma classe “maior” será responsável por receber os parâmetros inicialização de um objeto de uma classe menor internamente. - Usamos a composição quando queremos delegar uma função para outra classe.
  • 10.
    Aula 09 –Associação (Composição) - Exemplo: Vamos considerar uma classe salário que tem como atributos o valor da hora, a quantidade de horas e uma possível comissão: class Salario: def __init__(self, valor_hora, qtd_horas, comissao): self.valor_hora = valor_hora self.qtd_horas = qtd_horas self.comissao = comissao def calcularSalario(self): return (self.qtd_horas * self.valor_hora) + self.comissao
  • 11.
    Aula 09 –Associação (Composição) Agora vamos considerar uma classe Funcionário que, além dos atributos já pertencentes à classe Salário, também irá receber o nome, matrícula e função. Observe que o objeto da conta salário irá ser inicializado dentro da classe Funcionário: class Funcionario: def __init__(self, nome, matricula, funcao, valor_hora, qtd_horas, comissao): self.nome = nome self.matricula = matricula self.funcao = função, self.salario = Salario(valor_hora, qtd_horas, comissao)
  • 12.
    Aula 09 –Associação (Composição) Dessa forma, todos os atributos e métodos da classe Salário estarão disponíveis dentro da classe funcionário, inclusive o de calcular o valor total: funcionario = Funcionario('João', 1, 'Desenvolvedor', 55, 176, 0) print(funcionario.matricula) print(funcionario.nome) print(funcionario.funcao) print(funcionario.salario.calcularSalario())
  • 13.
    Atividade 01: Crie umaclasse chamada Endereço que terá rua, bairro e cidade em seu construtor. Em seguida, crie uma classe Pessoa que terá nome, telefone e endereço, que irá iniciar vazio. Crie dois métodos na classe pessoa, um para informar um endereço e outra para apresentar as informações na tela.
  • 14.
    Atividade 02: Utilizando amesma ideia da questão anterior, agora crie uma classe Empresa que terá como atributos a razão social, o CNPJ e uma LISTA de endereços que irá iniciar vazia. Na classe Empresa, você deverá criar um método que irá adicionar um endereço na lista e um que exiba na tela todos os endereços.
  • 15.
    Aula 09 –Associação (Agregação) - Na associação por agregação, o objeto “menor” será inicializado fora da classe “maior” e passado como parâmetro. - Ou seja, utilizando o mesmo exemplo anterior, o objeto salário deve ser inicializado fora do construtor da classe Funcionário e passado como parâmetro.
  • 16.
    Aula 09 –Associação (Agregação) - Exemplo: class Funcionario: def __init__(self, nome, matricula, funcao, salario): self.nome = nome self.matricula = matricula self.funcao = funcao self.salario = salario
  • 17.
    Aula 09 –Associação (Agregação) - Exemplo: salario = Salario(55, 176, 0) funcionario = Funcionario('João', 1, 'Desenvolvedor', salario) print(funcionario.matricula) print(funcionario.nome) print(funcionario.funcao) print(funcionario.salario.calcularSalario())
  • 18.
    Aula 09 –Associação (Agregação) Observações: - Quando fazemos associação por agregação, também criamos uma relação de “tem um”. - Na associação por agregação, os objetos são criados separadamente, então não dependem um do outro para sua existência. - A agregação é unilateral, ou seja, se um Funcionário “tem um” Salário, o contrário nunca será verdade.
  • 19.
    Atividade 03: 1 -Crie uma classe chamada produto que conterá como atributos o código, nome e valor. 2 – Crie uma classe chamada carrinho de compra que terá como único atributo uma lista de produtos que deve se iniciar vazia.
  • 20.
    Atividade 03 (continuação): 3- Crie um método para inserir produtos que receberá um objeto por parâmetro que será incluído na lista. 4 – Crie um método para listar todos os produtos. 5 – Finalize criando um método para exibir o valor final.
  • 21.
    Atividade 04: Crie umaclasse Pessoa que terá nome, cpf e endereço como atributos. Em seguida, crie uma classe Endereço que terá rua, número, bairro e cidade como atributos. Por fim, crie uma classe Conta Bancária que terá como atributos, agencia, conta, saldo, favorecido e limite como atributos e os métodos sacar, depositar, transferir e imprimir informações.
  • 22.
    Atividade 04 (continuação): -Você deve usar associação por agregação onde o objeto pessoa deverá receber um objeto endereço e o objeto conta deverá receber uma pessoa como favorecido. - Não esqueça de fazer as validações para saque, depósito e transferência respeitando inclusive os limites estabelecidos. - Agência deve ser inicializada com um valor padrão, assim como o saldo, que deve começar zerado.
  • 23.
    Atividade 04 (continuação): -Para finalizar, o método de imprimir as informações deve ser apresentado dessa forma:
  • 24.
    Desafio: Crie uma classechamada Ponto que receberá dois números identificando suas coordenadas que serão passados para os atributos x e y. Em seguida, crie uma classe Quadrilátero que irá receber quatro diferentes pontos como parâmetros que serão atribuídos a cada um dos seus vértices. Por fim, crie um método que irá calcular o perímetro do quadrilátero e apresenta-lo na tela.