Os Quatro Pilares da Programação Orientada a Objetos
On Setembro 27, 2021 by adminNeste blog vou explicar os 4 pilares do OOP e dar pequenos exemplos. Exemplos pequenos o suficiente que você e eu podemos compreender facilmente.
Abstraction é essencialmente “necessidade de saber”. Nós escondemos os principais detalhes de implementação, mantendo o uso óbvio em primeiro plano. Então lembre-se disto “esconda os detalhes, mostre a relevância”.
Abstraction exemplo…
Este é um formulário de inscrição de um aplicativo em que estou trabalhando (a relevância).
Esta é a lógica de implementação de submissão do formulário. (a necessidade de saber).
Polimorfismo
Polimorfismo é quando você usa um bloco de código, você muda a versão do código que está sendo usado com base nas entradas que estão sendo dadas a ele. Assim, para torná-lo um pouco mais claro, diferentes classes podem ser usadas com a mesma interface, mas podem fornecer sua própria implementação dessa interface.
Polimorfismo exemplo…
class Animal { speak = () => console.log('makes sound')}class Dog extends Animal { speak = () => console.log('woof')}class Cat extends Animal { speak = () => console.log('meowww')}class Cow extends Animal { speak = () => console.log('moooooo')}let dog1 = new Dog()let cat1 = new Cat()let cow1 = new Cow()dog1.speak() // => woofcat1.speak() // => meowwwcow1.speak() // => moooooo
As classes Cat, Dog, e Cow são herdadas da classe Animal. Isto permite que as classes Cat, Dog, e Cow usem a interface do Animal. No entanto, eles só têm o método speak disponível para eles. Se deixássemos o método speak fora da classe Cat, Dog, e Cow, e depois criássemos instâncias de uma classe Cat, Dog, e Cow, ainda poderíamos chamar o método speak nessas instâncias. O único problema é que ele imprimiria os animais ‘fazem som’ em vez dos sons apropriados que um gato, cão e vaca faz (‘meow’, ‘woof’, ‘moo’).
É aqui que entra a substituição do método. Se redefinirmos o método de fala nas classes Cat, Dog, and Cow, podemos personalizá-lo para imprimir os sons que gatos e cães fazem.
Encapsulamento
Encapsulamento une os dados e funções que manipulam os dados, e que mantém ambos a salvo de interferências externas e mau uso. Um bom exemplo de encapsulamento é uma classe. Na verdade podemos nos referir ao exemplo acima onde falamos de Cães, Gatos e Vacas com algumas pequenas modificações.
class Dog { constructor(name) { this.name = name } printName = () => console.log(this.name)}class Cat { constructor(name) { this.name = name } printName = () => console.log(this.name)}class Cow { constructor(name) { this.name = name } printName = () => console.log(this.name)}let dog1 = new Dog()dog1.name = "Max"dog1.printName() // => Maxlet cat1 = new Cat()cat1.name = "Mark"cat1.printName() // => Marklet cow1 = new Cow()cow1.name = "Tom"cow1.printName() // => Tom
Notice quando criamos instâncias para cada animal também atribuímos um nome a cada uma. O que se depreende aqui é que o ‘.name’ após cada instância criada (ou seja, dog1.name) são todos diferentes. Essas ‘.name’ são encapsuladas dentro de suas classes. Atribuir um nome a uma instância não modifica nenhum outro valor de nome de instância.
Herança
Inheritance é provavelmente o mais fácil de entender. Herança é o conceito de uma classe usando(inheriting) a interface de outra classe. Ela então se torna uma criança ou subclasse enquanto a classe da qual herda é o pai ou a superclasse. Na verdade, nós fizemos algumas heranças em nosso segundo exemplo acima. A classe Cat, Dog, e Cow herda da classe Animal para ter acesso ao método speak. Certifique-se apenas de adicionar a palavra-chave extends.
Deixe uma resposta