‫Bem-vindo de volta a este vídeo, vamos cobrir classes abstratas e, portanto, vamos criar um monte de novas
‫classes, e é importante que você entenda o conceito de classes e também de herança e
‫polimorfismo, porque vamos construir sobre isso .
‫E o que começamos é com a criação de uma nova classe.
‫Então, vamos criar uma nova classe aqui.
‫Vamos projetar na aula e vou criar uma classe de formas e essa será a forma.
‫Agora, a ideia é que queremos criar uma classe da qual não queremos criar nenhum objeto.
‫Portanto, não queremos instanciar formas.
‫Queremos instanciar objetos que são tipos de formas, mas não as próprias formas.
‫Assim, por exemplo, uma forma seria um cubo ou uma forma seria uma esfera.
‫E estou usando formas 3D aqui.
‫Direito.
‫Formas tridimensionais.
‫E bem, vamos criar classes que serão herdadas da forma.
‫Mas queremos ter certeza de que a forma é uma classe abstrata real, o que
‫significa que não seremos capazes de criar um objeto dela, mas usaremos seus sistemas ou seus métodos e suas propriedades.
‫Então vamos começar.
‫Vamos fazer esta forma abstrata, antes de tudo.
‫E, para isso, podemos usar a palavra-chave resumo.
‫Portanto, agora é uma classe abstrata.
‫Agora, vamos prosseguir com nosso programa, nesse caso, e ver que é uma classe abstrata real, então
‫vamos criar uma forma, um é igual a uma nova forma.
‫Então, quando tentamos fazer isso, você pode ver que não é possível criar uma instância de uma classe abstrata ou forma de
‫interface.
‫E como nossa forma é uma classe abstrata, não podemos criar objetos dela.
‫Portanto, não podemos instanciá-lo.
‫Esse é um aspecto importante aqui.
‫Tudo bem.
‫Precisaremos de uma equipe adequada.
‫E vou apenas criar essa propriedade chamada name.
‫Portanto, a forma precisa de um nome e temos um centro garantido para criá-la.
‫Estou apenas usando o adereço e, em seguida, toque duas vezes para criar uma nova propriedade.
‫OK, vimos isso nos vídeos.
‫Agora eu quero ter um método e o método que desejo usar será um método virtual, o vazio virtual.
‫Obter informação.
‫Este teclado virtual que você vê aqui é usado para modificar um índice de propriedade de método ou
‫evento declarado na classe base e permite ser sobrescrito na classe derivada.
‫Portanto, isso nos permite substituir o método get infl em uma classe de condução.
‫Tudo bem.
‫Essa é a ideia por trás deste teclado virtual aqui.
‫Então, vamos apenas adicionar uma instrução aqui, para obter o controle da linha certa e aqui, eu só
‫quero escrever algo como.
‫Este é um e, em seguida, o nome da forma.
‫OK, então este é um nome.
‫E agora a ideia por trás disso é que eu quero uma nova linha e depois quero ter a declaração.
‫Este é um e, em seguida, o nome da forma, porque sempre que criamos uma forma, podemos definir o nome
‫dela.
‫Portanto, temos um vazio virtual agora.
‫Agora também podemos adicionar um método abstrato.
‫Agora vamos fazer aquele volume duplo abstrato.
‫Portanto, o que desejo calcular é o volume de uma forma.
‫Bem, aqui não vou implementar este método.
‫Essa é uma distinção importante aqui.
‫Não vou implementá-lo aqui.
‫Vou apenas dizer, OK, sempre que uma classe deseja herdar de mim, ela precisa implementar uma funcionalidade para
‫o método de volume.
‫Tudo bem.
‫Agora, poderíamos, é claro, chamar esse aqui, calcular o volume de coisas assim.
‫Mas vou chamar apenas este volume.
‫Tudo bem.
‫Agora que preparamos nossa classe de forma, podemos salvá-la e criar uma nova classe.
‫Portanto, a próxima classe que vou criar é a classe do cubo.
‫Vou apenas criar um cubo, que é uma forma 3D.
‫Portanto, agora meu cubo herdará da forma.
‫Agora, se eu fizer isso, você pode ver que recebo um erro aqui e diz que o cubo não implementa
‫números abstratos herdados, molda esse volume.
‫Então, mostre que as possíveis correções estão certas.
‫Implemente uma classe abstrata.
‫Se eu fizer isso, você verá que ele implementa esse método de volume com uma instrução override.
‫Portanto, ele diz que está sobrescrevendo tudo o que foi definido na forma e na forma de uma classe abstrata.
‫E esse método é abstrato.
‫Como você pode ver, não existe método, amigo.
‫Na verdade, é apenas a declaração do método.
‫Portanto, agora podemos prosseguir e, é claro, implementar algo.
‫Você pode ver que lançamos um erro aqui, não uma exceção implementada.
‫Claro que queremos implementar algo aqui.
‫Portanto, vamos implementar um cálculo de volume em nossa classe de cubo.
‫Agora, para calculá-lo, precisamos de uma propriedade que será um comprimento.
‫Então, vou apenas criar esta nova propriedade chamada comprimento aqui.
‫E também vou adicionar um construtor.
‫Kube tão público.
‫E sempre que quero criar um cubo, preciso passar um comprimento.
‫Então é isso que estou dizendo aqui.
‫E enquanto estou nisso, também vou adicionar um nome.
‫Como você pode ver, estamos usando herança aqui porque o nome não é definido em Cuba.
‫Está definido na forma.
‫OK, então posso apenas definir o nome da variável aqui e vou definir o comprimento para o comprimento que foi passado
‫para mim.
‫Portanto, o comprimento da propriedade será o mesmo comprimento que é passado depois que criamos um objeto do
‫tipo.
‫Q Então essa é a ideia por trás dessa variável.
‫Em seguida, podemos implementar esse método de volume e simplesmente retornar algo.
‫Portanto, ele precisa retornar um duplo.
‫Direito.
‫Portanto, precisamos retornar algo que é baseado em double e, para calcular o volume de um cubo, estou usando um
‫cubo que tem o mesmo comprimento em todos os lados.
‫Então, vou dizer comprimento elevado à potência de três.
‫Então Magpul comprimento três, isso significa que ela vai calcular comprimento, tempos, comprimento, comprimento de vezes.
‫OK.
‫Então esse é o nosso volume e ele vai retornar esse valor.
‫Agora podemos prosseguir e também implementar este método chamado get info.
‫Então, o que vou fazer é apenas copiá-lo e agora não vou usar a palavra-chave virtual, mas
‫substituir a palavra-chave porque quero substituir para obter o método info de meu pai.
‫Agora, aqui, se eu fizer isso, o que posso fazer é também chamar eles de obter informações da minha classe base, o
‫que significa que, neste caso, também chamará obter informações da forma que diz, OK, então vai chame este
‫método aqui.
‫Isso significa que executará este código e, em seguida, executará qualquer código que adicionarmos na parte inferior dele.
‫Vou adicionar um pequeno texto aqui e vai dizer que o cubo tem o comprimento de e vou passar o
‫comprimento aqui.
‫Então, comprimento, é claro, eu também poderia calcular o volume aqui, mas vou deixar isso para você.
‫Então, se você quiser fazer isso, fique à vontade.
‫Tudo bem.
‫Então é assim que podemos.
‫Vá em frente e crie uma classe que herdará de uma outra classe que é abstrata.
‫Agora, como um pequeno desafio para você, e vou apenas pausar o vídeo uma vez, você deve
‫começar com um desafio.
‫Portanto, a ideia agora é criar outra forma, que é onde em nossa classe, que é herdada da forma e a
‫forma deveria ser uma esfera, agora implemente o mesmo tipo de funcionalidade que você pode ver aqui para
‫a esfera.
‫Tudo bem.
‫Boa sorte.
‫Poste um vídeo e tente fazer isso.
‫Tudo bem.
‫Então, espero que você tenha tentado.
‫Vou criar uma nova classe aqui e vou chamar essa esfera de classe assim.
‫sim.
‫E essa classe deve ser herdada de forma.
‫E, claro, preciso implementar minha classe abstrata, o que significa que preciso implementar esse método
‫de volume agora aqui, posso, é claro, calcular novamente onde tenho uma propriedade.
‫Mas, desta vez, uma propriedade útil não seria o comprimento, mas na verdade seria o raio, porque calculamos o
‫volume de maneira diferente em uma esfera do que em um cubo.
‫E não o fizemos em forma porque uma forma por si só não pode ter um volume.
‫Direito.
‫Se não for definida como uma guerra, não podemos calcular o volume dela, digamos, porque não sabemos que tipo de
‫forma ela tem.
‫Direito.
‫É por isso que precisamos daquelas cláusulas que herdam da forma e que implementam a funcionalidade.
‫Agora posso prosseguir e criar um construtor, uma esfera pública e um raio duplo.
‫Portanto, precisamos de um raio e, em seguida, podemos prosseguir e definir o nome da esfera, que deve
‫ser esfera, e devemos ter um valor de propriedade de raio.
‫Assim, atribuímos o raio que é passado para nós, pois o raio da propriedade tem valor.
‫Tudo bem.
‫Agora que temos isso, podemos calcular o volume.
‫Portanto, agora, em vez de lançar uma exceção aqui, quero calcular o volume da minha esfera.
‫E para fazer isso, preciso do PI e preciso do seguinte cálculo.
‫Então matemática que o raio de Powell à potência três e tudo isso multiplicado por três dividido por ou com quatro dividido
‫por três.
‫Tudo bem.
‫Então é assim que calculamos o volume e agora podemos seguir em frente e também implementar para obter o método Infl.
‫Então, vou apenas copiar em quatro do meu cubo e ser preguiçoso.
‫E então copie esta parte aqui e implemente a mesma coisa.
‫Então, costumávamos substituir a palavra-chave novamente.
‫É exatamente o mesmo nome que era na classe de forma.
‫E usamos as informações do Baskette aqui para chamar qualquer que seja o método aqui.
‫Então, qualquer que fosse o corpo do método ali.
‫E então, em vez de passar comprimento ou dizer algo sobre o comprimento, vamos dizer algo
‫sobre o raio e o cubo.
‫Nesse caso, a esfera tem um raio de raio.
‫Tudo bem.
‫Agora que temos tudo isso, o que podemos fazer agora é seguir em frente e criar objetos de
‫todas essas classes diferentes.
‫Portanto, não vou dizer olá, mundo aqui.
‫Em vez disso, vou criar várias formas.
‫Vou dizer, OK, por favor, me dê uma matriz de formas e será uma nova esfera com um raio de quatro
‫e um novo cubo com um raio de três.
‫E neste caso, na verdade, é o comprimento de três porque Cube não tem um raio, ele tem um
‫comprimento.
‫E então eu quero executar algo para cada uma das formas até agora, forma em formas.
‫Eu quero.
‫Percorra todos eles e este caso, apenas os dois.
‫Mas o que eu quero é uma informação moldada.
‫Portanto, get info deve ser chamado.
‫E eu quero escrever algo assim.
‫E, neste caso, zero.
‫Será o nome e depois quero mostrar o volume, então quero que o nome tenha um volume de.
‫E então, é claro, eu quero saber o volume desta peça que estamos vendo, então dê
‫forma a esse nome e a esse volume.
‫OK, então aqui é importante chamarmos o método de volume, certo?
‫Não é apenas um.
‫Propriedade, então a gente tem controle, Linha Vermelha tem um volume de neste caso, nome tem um volume de volume, então ele
‫vai apenas calcular o volume.
‫OK, agora vamos apenas testar isso.
‫Vamos ver o que está acontecendo aqui.
‫O que criamos e somos, temos uma linha vazia aqui.
‫Então diz que é uma esfera.
‫A esfera tem um raio de quatro.
‫A esfera tem um volume de duzentos e sessenta e oito vírgula zero oito.
‫E então este é um cubo.
‫Este Kupers, um comprimento de três a Cube tem um volume de vinte e sete.
‫Tudo bem.
‫Então você pode ver que este é um código muito simples que escrevemos aqui, mas ele já explica ou mostra a maioria
‫das funcionalidades que precisamos saber sobre classes abstratas.
‫Agora, o legal é que também podemos usar mais algumas palavras-chave que ainda não usamos.
‫E como este vídeo está ficando longo o suficiente, eu diria que faremos isso no próximo vídeo.
‫Então, vejo você lá.