Bem-vindo de volta, Scott Stanley aqui. nestas aulas vamos dar uma olhada no imperativo versus programação declarativa, Lambdas, interfaces funcionais e funções de nível superior. Portanto, nesta lição, vamos dar uma olhada especificamente em o que é programação imperativa? O que é programação declarativa? Então vemos aqui, existem alguns paradigmas de programação diferentes, algumas abordagens para resolver problemas de programação. A abordagem imperativa provavelmente existe há mais tempo. Define um programa como uma sequência de declarações que mudam o estado do programa. Então você normalmente tem variáveis de trabalho e loops e normalmente uma boa quantidade de código. Enquanto declarativa, por outro lado, é uma abordagem que expressa a lógica de um cálculo sem descrever seu fluxo de controle. É como declarar o que você gostaria que acontecesse e apenas fazer com que seja assim, Considerando que o imperativo é arregaçar as mangas e escrever uma boa quantidade de código. E então eles querem que tenhamos certeza de que vemos aqui que uma função deve retornar um valor baseado apenas no argumento e não deve ter efeitos colaterais. Quero dizer, é a definição de livro didático de uma função. Normalmente, quando falamos de programação declarativa, função é a próxima coisa que vamos começar a falar sobre isso. Temos uma lista de tipo de aluno, quatro alunos eu acho Scott, Tyler, Chris e Edward. E então, antes de cada teste na suíte da unidade J aqui acabaremos com uma nova lista de alunos para cada teste. Dessa forma, não há resíduos entre os testes em execução. Os testes são totalmente independentes desta forma. Então é isso. A primeira coisa que olhamos é uma pesquisa que está usando o estilo imperativo. E então vamos percorrer todos os alunos e estamos tentando determinar se aquele que alguém está procurando, nesse caso, eles querem saber se Eddie Van Halen está aqui, eles querem saber se existe. Portanto, temos nosso booleano 'found = false', então vamos começar pessimistas. Não, não existe. E o ID que queremos procurar é o número quatro. Aí está o nosso loop. A primeira coisa que faremos no loop digamos que essa ID de estudante seja igual à que deve ser pesquisada? Se assim for, dizemos encontrado é igual a verdadeiro e saímos do loop e retornaríamos true para quem estava perguntando se esse aluno existe? É uma boa quantidade de código. A maneira declarativa de resolver esse mesmo problema seria perguntar aos alunos, qual é a coleção aqui a lista de alunos, pergunte aos alunos se contém Eduardo. E neste caso seria verdade. Então, se formos dar uma olhada em como isso funcionou, o código, em vez de ter que escrevê-lo toda vez que você quiser jogar esse jogo, esse aluno existe ou não, está contido no tipo de aluno método igual. Então, antes vimos a ordem natural de um aluno era me comparar com outro aluno pelo sobrenome. Bem, aqui adicionamos um igual em um código hash que é o que é chamado quando coleções não contém é invocado. Então, vamos voltar e olhar para isso mais uma vez. Quando a coleção contém o método é invocado, o método Student equals é o que será invocado. Então a primeira coisa que vai fazer é dizer o outro tipo de objeto é do mesmo tipo que eu? Em outras palavras, quero ter certeza que um aluno está sendo comparado a outro aluno. E nesse ponto eu posso dizer, minha carteira de identidade é igual a esta outra carteira de estudante? Portanto, é uma abordagem muito mais limpa. E como você pode ver se, se essa é a questão que alguém quer poder perguntar a você, é muito mais limpo apenas para dizer, 'Alunos vocês contém Edward?' Muito mais simples fazer isso do que escrever todo esse código. Então, vamos dar uma olhada em outro exemplo aqui e essa é uma classificação imperativa usando um comparador que vimos isso, eu acredito, coleção classificar alunos e classificá-los desta forma. Então, se olharmos para os alunos por comparação de data de nascimento, bem aí está, vamos acabar classificando os alunos, dado dois alunos de cada vez comparando suas datas de nascimento. Então, todos eles serão classificados agora cronologicamente a partir da data de nascimento. E o sabor declarativo disso não exigiria que escrevêssemos isso, não exigiria isso. O sabor declarativo desse tipo é o que veremos na próxima lição. Obrigado por assistir. A próxima lição será Lambda e Interfaces Funcionais.