[MÚSICA] [MÚSICA] Olá à todos, meu nome é Eduardo Guerra, estamos aqui no curso de Desenvolvimento Ágil com Padrões de Projetos e nessa aula, vamos começar nossa revisão de orientação a objetos falando sobre a abstração de dados. A gente vai entender o que é essa questão da abstração de dados e realmente é o que dá o nome à programação orientada à objetos, que é justamente a diferença de classes e objetos. Vamos ver que negócio é esse. Eu já escutei muito falarem que as classe são os moldes nos quais os objetos são feitos. Aí eu penso já pão de forma, uma forma, como é que seria uma herança de uma forma, né, pouco esquisito. Parece que a classe ela produz o objeto, essa analogia, eu pessoalmente, não gosto muito não. Eu prefiro pensar o seguinte, a abstração de dados é uma estruturação, uma organização dos dados e da lógica dos softwares, nas classes. E aí você pega essa classe, que é essa abstração e você cria uma coisa concreta dessa classe, que é o objeto. Então vamos ver aí, exemplo. Imagina por exemplo que eu falo pensa carro, o que é carro? Ele é conceito abstrato então você tem a ideia do que é carro. Agora pensa carros concretos, então você vai pensar no seu carro, no carro da sua sogra, no carro do seu amigo, que normalmente é sempre melhor do que o nosso aquela famosa frase, a grama do vizinho sempre é mais verde, né você olha aquele carro bonitão do amigo, a gente sempre tem amigo com carros mais bonitos Então imagine esses carros, esses são carros concretos. Eu tenho alí o nosso conceito, nossa abstração, enquanto os carros que estão alí na rua, estão na sua garagem são os carros concretos. Aí o que é a classe? Ela é abstrata, eu não pego nela, ela é conceito, isso não quer dizer que eu não possa ter objetos que representam conceitos abstratos como por exemplo, uma reunião, ninguém vai lá e pega uma reunião, mas é uma reunião concreta, é uma coisa que existe, enquanto que conceito de reunião seria uma classe, de repente software de agenda, por exemplo. Então a classe ela é abstrata, a classe ela tem propriedades e ela tem comportamento. Então eu posso falar que o carro, ele tem uma potência de motor, eu posso estar falando que o carro ele pode andar, então esse é o comportamento. E aí o objeto, o objeto ele é concreto, é por exemplo o meu carro que está estacionado aqui embaixo. Ele tem valores, enquanto a classe ela tem alí a propriedade de potência do motor, o meu carro é 1.4 então ele tem valor para aquela propriedade. Enquanto o carro é uma abstração que pode fazer uma operação de andar e frear, o meu carro, efetivamente ele faz esse comportamento, ele anda ele para, ainda bem que para né, senão não estaria aqui, então pensando assim, a classe ela dá uma realmente abstração, ela tem essas propriedades ela tem esse modelo de comportamento, enquanto o meu carro faz isso daí. E o que é interessante é que nem todo carro vai fazer igual todo carro anda, mas não anda da mesma forma. A parte interna não é igual, mas o comportamento é o mesmo, da mesma forma que cada carro tem valor diferente para a potência do motor. Então, pegando pouco pelo ponto de vista histórico, lá nas primeiras linguagens de programação, onde a gente tinha muito aqueles Go To a gente não tinha, por exemplo, for, loop, hífen era tudo pulando, eu precisava fazer uma condicional, eu falava assim, se acontecer isso, pule para a linha 20 se não, pule para a linha 40. Se eu quisesse separar pedaço de código para poder reutilizar ele, eu tinha que fazer alguma coisa assim, eu guardava uma variável a linha de código de onde eu estava saindo, e chamava, falava assim, vai lá para a linha 300. E aí, quando eu terminava, lá pela linha 340, eu falava assim, volta para a linha de código, onde tem onde o tal valor dessa variável. Aí você poderia por exemplo, nada impede que você pulasse para o meio desse negócio ou que você voltasse para qualquer ponto do programa. Então realmente daí é de onde vem aquela expressão, código macarrônico que ele entra, pode passar por qualquer lugar e você não sabe exatamente qual caminho ele está fazendo era realmente monte de coisa embolada alí. Então a programação estruturada, ela deu passo importante na organização do código modularizando a lógica. A partir da programação estruturada foram criadas as estruturas de controle de fluxo, as condicionais, o if, o switch, foram criadas as estruturas de interação que seria o caso aí o for, o while, os nossos Loops e as funções, os procedimentos onde você pode criar uma lógica com parâmetros, e com retornos e invocar essa lógica do meio do seu programa. Então a programação estruturada ela deu passo muito importante relação ao que tinha antes. E aí, para a gente entender essa questão histórica, o que foi que a orientação a objeto melhorou nisso tudo? Enquanto a programação estruturada estruturou a parte de lógica, a parte de dados ainda era meio caótica, se utilizavam muitas variáveis globais, então a orientação a objetos, ela veio aí para eliminar essa deficiência dessa falta de modularização dos dados. Então uma classe, no caso ela tem as informações da abstração ela tem os comportamentos relacionados com aquela abstração, então de uma certa forma, ela organizou, não só a lógica, mas também as informações. Então, por exemplo, eu não vou ter lá monte de variável, nome, idade e de repente tenho, nota, de repente eu tenho professor nome do professor, tudo isso misturado, eu tenho aqui o aluno e o aluno tem essas informações O professor não tem a ver com o aluno. Então a gente organiza melhor os dados e os conceitos. Porque eu coloquei aí os conceitos? Porque não são só os dados, a gente tem também que a gente vai ver na próxima aula, a questão da herança, das abstrações que também foi bem importante, na verdade é o ponto chave que permite a reutilização de código você conseguir criar uma base de código mais organizada ou mais deficiente. Essa questão do conceito é extremamente importante. E aí enquanto na programação estruturada apareceu alí aquela nova entidade, que eram as funções aqui, a principal nova entidade foi a classe, né esse local onde eu consigo tanto organizar os meus dados quanto o meu comportamento, certo. Então é isso, esse é o nosso, dos pilares da orientação a objetos, que é a abstração de dados e na próxima aula a gente continua no próximo. Muito obrigado e até mais. [MÚSICA] [MÚSICA]