[Música] fala Mestres beleza no vídeo de hoje é a primeira aula aí né Do nosso módulo de programação orientada a objetos né nessa aula aqui a gente vai ver aí o os fundamentos da orientação a objetos a gente vai descobrir ali começar a trabalhar com classes né eu vem falando de classes aí Alguns módulos e agora a gente vai aprender de fato a trabalhar com as classes né né E vai a gente vai falar também de todos os princípios básicos aí da programação orientada ao objeto paraa a gente est elaborando mais esses princípios nas próximas
aulas que que virão tá então nessa aula aqui eh antes da gente chegar de fato na classe eu quero falar um pouco desses princípios da e a própria ideia né de orientação eh ao objeto né de programação orientada a objetos Então como o nome fala né a gente vai desenvolver nossos códigos nossas aplicações nossas estruturas se orientando aos objetos né a gente trabalhou com objetos teve um módulo aí de objeto a gente viu o potencial dos objetos né como que a gente pode eh trabalhar ali com eles armazenar valores né as propriedades e funções e
quando quando a gente chega no no nível de programação orientada a objeto a gente vai começar a trabalhar com classe né e a diferença da classe pro objeto é que basicamente a classe ela vai ser um modelo pra criação de um objeto né então a gente usa a classe para criar no final né a gente cria esse objeto e como a classe ela tem uma estrutura diferente a gente consegue ter ali o Construtor e enfim fazer implementar de fato os princípios aí da orientação objeto a gente começa a ter uma robustez maior e e para
para est trabalhando E para est criando aí e modelando né os nossos objetos da for que nos interessa Então os princípios né da programação orientada ao objeto a gente pode citar aqui três né que é a ideia de polimorfismo encapsulamento e herança são esses três onde polimorfismo é uma ideia que a gente vai pensar em no objeto se ele ele vai ter diferentes Faces né ele vai se comportar diferente dependendo ali da forma que a gente quiser né então El ele pode ter várias formas né o encapsulamento é basicamente quando eu tenho uma classe eu
encapsulou algumas coisas nela Então por exemplo se a gente pensar numa implementação de alguma funcionalidade a ideia ali a regra da implementação vai ficar encapsulada dentro ali daquela classe né daquele objeto e a herança é basicamente onde a gente consegue fazer ali as extensões né ou seja se a gente pensar aqui por exemplo no no objeto pessoa eu tenho objeto pesso pessoa e ter objeto aluno e o aluno Ele é uma pessoa né então a gente começa a ter essa herança de classes onde uma classe estende a outra e meio que erda né todas as
funcionalidades que a classe pai ali eh tinha implementada né então a gente vai ver todos esses exemplos aí principalmente de herança e polimorfismo a gente vai trabalhar um pouco mais porque a ideia de encapsulamento ela já é por si só o bem a gente consegue enxergar is isso bem Principalmente quando a gente começar a trabalhar aqui para pra criação dos dos métodos Tá então vamos fazer isso eu vou apresentar aqui para vocês a sintaxe né do da para trabalhar com classes pra gente e e se né e entrando mais aí no na forma de de
criar objetos usando classes então nós temos aqui né o Class eu sempre digito quando eu quero uma classe né Eu digito aqui Class e dou o nome para essa classe eu vou eu vou criar aqui a classe pessoa pessoa e depois do nome da classe nós usamos aqui as chaves tá então basicamente aqui eu declarei a classe pessoa e aqui dentro da classe né de toda classe A a gente consegue usar o Construtor né O constructor que esse Construtor ele é basicamente é o cara que vai construir a classe né que vai construir o objeto
que vai ser o derivado né o resultado ali daquela classe Então sempre que eu vou gerar uma Instância de um objeto né Sempre que eu vou gerar um objeto eu executo o Construtor tá então aqui como a gente tá no primeiro exemplo né dentro do Construtor vou fazer o seguinte ó console.log é o famoso né hello world E com isso aqui eu tenho uma classe pessoa né e esse Construtor sendo definido aqui dentro então a classe ela tá criada ela e e basicamente ela já descreve aí o que que é um objeto pessoa que a
gente não fez nada então vai ser um objeto vazio e com com isso aqui feito né com isso aqui escrito com com a classe escrita a gente pode gerar as instâncias dos objetos então para gerar uma Instância da classe pessoa ou seja eu vou gerar a ideia de Instância de classe é o objeto final né então a classe vai gerar uma Instância né a classe vai gerar um objeto e a gente fala que o objeto ele é Instância da classe né então se eu criar um objeto aqui com a classe pessoa eu vou ter um
objeto que é Instância da classe pessoa tá então eu para fazer a Instância a gente usa o new tá então lembra aí do New que a gente usou New Promise New error tudo isso aí eu tava gerando instâncias de objetos daquele tipo né daquelas classes que eu tava usando então o Promise né quando eu dei o new Promise eu gerei uma Instância do objeto Promise né quando eu dei um New error eu gerei uma Instância um objeto que é a Instância do da classe error né e aqui eu vou dar um New pessoa aqui eu
vou gerar um objeto a partir da classe pessoa e eu posso armazenar esse objeto em uma variável tá então eu vou fazer isso e vou fazer aqui um console log desse objeto pessoa pra gente olhar isso aqui então quando eu executo o código nós temos aqui ó hello world que hello world foi quem foi o Construtor Então sempre que eu dou um New que eu Gero uma Instância o Construtor ele vai ser executado que nós temos aí ó hello world que foi executado quando eu tava gerando eh a Instância né da classe pessoa e logo
depois eu fiz o log aqui de pessoa e no log ele dá o nome da classe né então a o a classe que foi usada para gerar esse objeto que é pessoa e aqui o objeto ele é vazio né porque a gente não implementou nada tá então se eu chamar aqui ó New pessoa mais de uma vez ó eu vou ter pessoa e pessoa dois e vou fazer o log delas também pessoa e pessoa dois se eu executo esse código eu tenho aqui ó vai printar dois Hello Words né e dois objetos pessoa por eu
gerei duas instâncias separadas Ou seja eu tenho dois objetos diferentes de de pessoa tá certo então com essa ideia né agora que a gente já entendeu o que que é a classe o que que é a Instância da Classe A gente vai começar a estruturar de fato a classe pessoa pra gente ter aí de implementar né algumas coisas pra gente conseguir ver tudo isso funcionando então o que que eu vou falar aqui que uma pessoa ela vai ter um nome e uma idade tá então sempre que eu criar o objeto pessoa eu quero que esse
objeto tenha nome e idade e quando eu for criar né dar umil pessoa eu quero eu tenho que enviar esses argumentos aí paraa classe pessoa tá E aí para definir isso a gente usa o Construtor tá então se eu falar aqui que o Construtor ele vai receber um nome e vai receber também uma idade essas duas coisas quando eu faço isso eu posso fazer aqui o consol log ao invés de hello world eu vou fazer o consol log do nome e da idade tá se eu salvo isso e executo o nosso código nós temos aí
ó undefined undefined porque eu não passei esses parâmetros né mas aqui na classe pessoa ele já tá eh pedindo né esse nome e essa idade pra gente enviar isso aí como argumento então aqui eu vou criar duas pessoas eu vou criar o João e a Maria então o nome é João a string João né aqui vai ter a string Maria e a idade de Maria é 22 e de João é 28 certo então se eu salvo isso aqui e executo agora nós temos né João 28 que foi os parâmetros que nós enviamos que nós recebemos
né e Maria 22 que também foi nesse segundo objeto que eu criei só que no cons log né pessoa continua sendo um objeto vazio e isso porque quando a gente recebe no Construtor esses valores a gente precisa atribuir esses valores aos membros da classe tá então na dentro da classe A gente consegue criar membros que a gente pode pensar como uma variável para armazenar algum tipo de coisa algum tipo de valor então para declarar esses membros a gente pode declarar aqui em qualquer lugar mas o padrão é que a gente declara aqui antes do Construtor
então eu posso criar aqui ó nome e idade tá quando eu faço isso digito aqui nome e idade eu basicamente eu estou criando esses dois membros e eles inicializam como undefined tá então eu vou fazer o seguinte eu vou salvar isso aqui e vamos rodar de novo e quando a gente rodar no nosso log nós temos aqui ó nome undefined idade undefined então agora a nossa classe Ela já tem dois membros né que é o nome e a idade e eles iniciam um vazio mas eu posso também iniciar eles com valor ó o nome vai
ser a string fulano e a idade vai inicializar com zero tá se eu faço isso e executar nós temos aqui ó nome Fulano idade zero pros dois objetos né para as duas pessoas então a gente consegue criar esses membros que são variáveis Mas eu também posso criar métodos então aqui depois do Construtor eu posso criar o método falar e falar anotação é essa aqui ó pra gente criar uma função né que vai ser uma função que vai ficar dentro do da da da classe pessoa se eu quiser que esse método falar for assíncrono né Eu
digito isso aqui ó ayc antes do do nome do método né e a gente consegue eh fazer essa declaração então isso de de criar antes e depois do Construtor tanto faz tá mas o padrão que a gente costuma usar é criar as os membros as variáveis antes do Construtor e depois dele a gente coloca os métodos Tá mas isso aqui tanto faz tá então seu Salv isso aqui e a gente executar de novo a gente vai ver que a pessoa ela possui o nome e a idade mas os métodos eles não são listados aqui no
console log tá quando a gente fizer o debug a gente consegue até enxergar esses métodos mas no console log aqui a gente só vai conseguir ver as variáveis tá os métodos não então o que que eu posso fazer eh no Construtor Na verdade nós estamos né inicializando a classe nós estamos enviando os parâmetros Mas a gente não tá fazendo nada com esses valores a gente só tá dando consol log então eu consigo pegar esses valores e atribuir a esses membros das classes da da classe né que seria nome e idade e como que eu faço
isso e nós temos aqui dentro da classe nós podemos usar o dis né esse dis ele se refere a própria classe em si que eu estou trabalhando Então sempre que eu estiver em uma classe eu digitar o dis ponto ele vai aparecer para mim ah tudo que tem dentro daquela classe então a gente pode ver que a classe pessoa tem a propriedade o membro né o membro o membro nome o membro idade e também o membro falar né e onde falar ele deixa aqui os ícones Diferentes né que a gente consegue ver que falar é
um método né mas idade e nome são variáveis então eu posso fazer o seguinte ó dis P nome ou seja essa variável nome aqui ela vai ser igual né eu vou atribuir nela o nome que eu recebi via parâmetro no Construtor e d mesma coisa pra idade dis pon idade vai ser igual a idade Beleza então quando eu faço isso e executo agora nós temos duas pessoas né onde uma pessoa tem o nome João a idade 28 E outra tem o nome Maria e a idade 22 tá então com isso aqui a gente consegue a
ter e a gente atinge né Essa flexibilidade aí de criar diversos objetos diversas instâncias diferentes e essas instâncias Elas irão se comportar também diferente dependendo aí do dos parâmetros que a gente envia né de como o Construtor atribui esses valores de como que a gente implementa né os métodos que nós temos aqui então facilita bastante a tá fazendo essa criação de de vários objetos do mesmo tipo né várias instâncias da mesma classe tá então com isso aqui criar vamos vamos brincar aqui com o método ó o falar aqui vai fazer o console P log console.
log pessoa falando e aí para chamar esse método é da mesma forma que a gente fazia lá nos objetos tá então aqui depois esses consoles log eu vou chamar pessoa pon falar e executo o método a mesma coisa a pessoa dois ó pessoa 2 pon falar e a gente executa então se eu executar aqui o o nosso arquivo né Nós temos aqui ó dois logs de pessoas falando é pessoa falando e pessoa falando então e aí com isso feito a gente pode por exemplo nesse conso log aqui de pessoa falando vamos usar aqui o template
literals né que é as crases aqui e eu vou falar que o nome da pessoa ou seja cifrão e Chaves né pra gente colocar uma variável aqui dentro da string como que eu pego o nome da pessoa né a gente faz isso usando dis também então aqui dentro da string eu vou editar dis ponto nome né o nome da pessoa o nome do dessa né da instância de pessoa que eu que eu vou criar está falando e aqui eu vou salvar então quando eu executar isso ele vai pegar o nome específico daquela pessoa que eu
passei no Construtor e vai colocar dentro da string então agora quando eu executo a gente vai ver que eu eu não posso selecionar né uma parte do código e clicar ali em executar agora sem selecionar nada vai funcionar e Aqui nós temos ó João está falando e Maria está falando né que que são os que é um comportamento diferente é um resultado diferente que nós conseguimos implementar em um só lugar que foi dentro da classe né então Eh e isso né obviamente vai escalar muito isso pode ter várias formas da gente conseguir enxergar essa facilidade
de tá usando as classes mas de acordo a gente for dando mais exemplos aqui for evoluindo principalmente no nos princípios aí né da da orientação objeto a gente vai conseguir ent end melhor e ver as possibilidades que nós temos tá então essa aula aqui ela é basicamente uma aula de apresentação onde eu vou apresentei para vocês os princípios né que é a herança polimorfismo e encapsulamento e nas próximas aulas a gente vai explorar melhor esses princípios na prática tá então para essa aula é isso eu espero que eu tenha ajudado qualquer dúvida pode estar deixando
um comentário logo abaixo e é isso aí muito obrigado e até a próxima n