Please enable JavaScript.
Coggle requires JavaScript to display documents.
Programação Orientada a Objetos - POO, concursos públicos - Coggle Diagram
Programação Orientada a Objetos - POO
origem
Alan Kay (1970): matemático e biólogo
"o computador ideal deve funcionar como um organismo vivo, isso é, cada célula se relaciona com outras a fim de alcançar um objetivo, mas cada uma funciona de forma autônoma. as células poderiam também reagrupar-se para resolver um outro problema, ou desempenhar outras funções.
vantagens (COMERNada)
Confiável: o isolamento entre as partes gera software seguro. ao alterar uma parte, nenhuma outra é afetada
Oportuno: ao dividir tudo em partes, várias delas podem ser desenvolvidas em paralelo
Manutenível: atualizar um software é mais fácil. uma pequena modificação vai beneficiar todas as partes que usarem o objeto
Extensível: o software não é estático. ele deve crescer para permanecer útil
Reutilizável: podemos usar objetos de um sistema que criamos em outro sistema futuro
Natural: mais fácil de entender. você se preocupa mais na funcionalidade do que nos detalhes de implementação
objeto: instância de uma classe
coisa material ou abstrata que pode ser percebida pelos sentidos e descrita por meio das suas:
características (atributos/propriedades/campos);
comportamentos (métodos/funções);
estado (características atuais).
classe: define os atributos e métodos comuns que serão compartilhados por um objeto
molde do objeto
coisas que eu tenho (características)
coisas que eu faço (comportamentos)
como eu estou agora (estado)
exemplo: caneta
coisas que eu tenho:
modelo / cor / ponta / carga / tampada
coisas que eu faço:
escrever / rabiscar / pintar / tampar / destampar
como estou agora:
azul / ponta fina / 50% de carga / tampada / escrevendo
instanciar: gerar um objeto através da classe (molde do objeto)
Linguagem de Modelagem Unificada (UML)
https://prnt.sc/uxclry
modificadores de visibilidade
public +
(classe atual e todas as outras classes)
private -
(somente a classe atual)
protected #
(a classe atual (mãe) e todas as suas sub-classes (filhas))
https://prnt.sc/uxgf3m
herança
https://prnt.sc/uy8vpp
https://prnt.sc/uyonj5
agregação
https://prnt.sc/uy6jwt
interface
https://prnt.sc/uxm6m3
pilares
encapsulamento: ocultar partes independentes da implementação, permitindo construir partes invisíveis ao mundo exterior
abstração: abstração é a habilidade de concentrar nos aspectos essenciais de um contexto qualquer, ignorando características menos importantes ou acidentais
interface: lista de serviços fornecidos por um componente. é o contato com o mundo exterior, que define o que pode ser feito com um objeto dessa classe
https://prnt.sc/uxm6m3
todos os atributos da classe que irá implementar a interface devem ser privados
agregação: um objeto tem um (um objeto tem uma instância de outro ou de seu próprio objeto dentro dele)
https://prnt.sc/uy6jwt
um membro public da superclasse não pode tornar-se protected ou private nas subclasses. da mesma forma, um membro protected não pode tornar-se private
herança: permite basear uma nova classe na definição de uma outra classe previamente existente. a herança será aplicada tanto para as características quanto para os comportamentos
exemplo
https://prnt.sc/uy8u85
https://prnt.sc/uy8uw2
https://prnt.sc/uy8vpp
https://prnt.sc/uyonj5
tipos
herança de implementação: quando não há atributos ou métodos adicionais
https://prnt.sc/uyorb1
(visitante)
herança para diferença:
https://prnt.sc/uyorb1
(demais objetos)
abstrato/final
classe abstrata: não pode ser instanciada. só pode servir como progenitora
método abstrato: declarado, mas não implementado na progenitora (apenas pode ser colocado em uma classe abstrata ou interface)
classe final: não pode ser herdada por outra classe. obrigatoriamente folha
método final: não pode ser sobrescrito pelas suas sub-classes. obrigatoriamente herdado
polimorfismo (poli=muitas/morfo=formas): permite que um mesmo nome (com assinaturas diferentes) represente vários comportamentos diferentes
assinatura do método: quantidade e os tipos do parâmetros {o retorno não faz parte da assinatura}
tipos
sobreposição (override) / inclusão: acontece quando substituímos um método de uma superclasse na sua subclasse, usando a mesma assinatura (mesma assinatura / classes diferentes)
sobrecarga (overload) / paramétrico: consiste em permitir, dentro da mesma classe, mais de um método com o mesmo nome (assinaturas diferentes / mesma classe)
métodos com mesmo nome, porém funcionam de forma diferente (sobreposição)
https://prnt.sc/uyxt0r
https://prnt.sc/uyxt58
concursos públicos
CAP-PD (marinha) - cabo
EAGS (aeronáutica) - sargento
EsFCex
QT