‫Bienvenido de nuevo y este video, vamos a cubrir las clases abstractas y por lo tanto vamos a crear un
‫montón de nuevas clases, y es importante que entiendas el concepto de clases y también la herencia y el
‫polimorfismo, porque vamos a construir sobre eso. .
‫Y lo que empezamos es crear una nueva clase.
‫Así que creemos una nueva clase aquí.
‫Vamos a proyectar en clase y voy a crear una clase de formas y esa será la forma.
‫Ahora, la idea es que queremos crear una clase de la que no queremos crear ningún objeto.
‫Así que no queremos crear instancias de formas.
‫Queremos crear instancias de objetos que son tipos de formas pero no formas en sí mismas.
‫Entonces, por ejemplo, una forma sería un cubo o una forma sería una esfera.
‫Y estoy usando formas 3D aquí.
‫Derecha.
‫Formas tridimensionales.
‫Y bueno, vamos a crear clases que heredarán de shape.
‫Pero queremos asegurarnos de que la forma sea una clase abstracta real, lo que
‫significa que no podremos crear un objeto de ella, pero usaremos sus sistemas o sus métodos y sus propiedades.
‫Entonces empecemos.
‫Hagamos esta forma abstracta, en primer lugar.
‫Y para ello, podemos utilizar la palabra clave resumen.
‫Entonces ahora es una clase abstracta.
‫Ahora, vayamos a nuestro programa, ese caso, y veamos que es una clase abstracta real, así que
‫creemos una forma, una forma es igual a una nueva forma.
‫Entonces, cuando intentamos hacer eso, puede ver que no se puede crear una instancia de una clase abstracta o forma de
‫interfaz.
‫Y como nuestra forma es una clase abstracta, no podemos crear objetos a partir de ella.
‫Entonces no podemos instanciarlo.
‫Ese es un aspecto importante aquí.
‫Está bien.
‫Necesitaremos un equipo adecuado.
‫Y solo voy a crear esta propiedad llamada nombre.
‫Entonces, la forma necesita un nombre y tenemos un centro garantizado para crearlo.
‫Solo estoy usando prop y luego doble toque para crear una nueva propiedad.
‫Bien, lo hemos visto en los videos.
‫Ahora quiero tener un método y el método que quiero usar será un método virtual, virtual void.
‫Obtener información.
‫Este teclado virtual que ve aquí se usa para modificar un índice de propiedad de método o un evento
‫declarado en la clase base y permite sobrescribirlo en la clase derivada.
‫Entonces esto nos permite anular el método get infl en una clase de manejo.
‫Está bien.
‫Entonces esa es la idea detrás de este teclado virtual aquí.
‫Así que agreguemos una declaración aquí, para tener el control de la línea correcta y aquí, solo quiero
‫escribir algo como.
‫Este es un y luego el nombre de la forma.
‫Bien, este es un nombre.
‫Y ahora la idea detrás de esto es que quiero tener una nueva línea y luego quiero tener la declaración.
‫Este es un y luego el nombre de la forma, porque siempre que creamos una forma, podemos establecer el nombre de
‫la misma.
‫Así que ahora tenemos un vacío virtual.
‫Ahora también podemos agregar un método abstracto.
‫Ahora hagamos ese volumen doble abstracto.
‫Entonces, lo que quiero calcular es el volumen de una forma.
‫Ahora bien, aquí no voy a implementar este método.
‫Esa es una distinción importante aquí.
‫No lo voy a implementar aquí.
‫Solo voy a decir, está bien, siempre que una clase quiera heredar de mí, necesita implementar una funcionalidad para
‫el método de volumen.
‫Está bien.
‫Ahora, por supuesto, podríamos llamar a este, calcular el volumen de cosas como esa.
‫Pero solo voy a llamar a este volumen.
‫Está bien.
‫Entonces, ahora que tenemos nuestra clase de forma preparada, podemos guardarla y podemos crear una nueva clase.
‫Entonces, la siguiente clase que voy a crear es la clase de cubo.
‫Así que solo voy a crear un cubo, que es una forma 3D.
‫Entonces ahora mi cubo heredará de la forma.
‫Ahora, si lo hago, puede ver que aparece un error aquí y dice que Cube no implementa números abstractos heredados,
‫da forma a ese volumen.
‫Así que demuestre que las posibles soluciones son correctas.
‫Implementar clase abstracta.
‫Si lo hago, puede ver que implementa este método de volumen con una declaración de anulación.
‫Entonces dice que prevalece sobre todo lo que se definió en forma y como forma como una clase abstracta.
‫Y este método es abstracto.
‫Como puede ver, no hay método, amigo.
‫Realmente es solo la declaración del método.
‫Así que ahora podemos seguir adelante y, por supuesto, implementar algo.
‫Puede ver que arrojamos un error aquí, no una excepción implementada.
‫Por supuesto que queremos implementar algo aquí.
‫Así que implementemos un cálculo de volumen en nuestra clase de cubo.
‫Ahora, para calcularlo, lo que necesitaremos es una propiedad que tendrá una longitud.
‫Así que solo voy a crear esta nueva propiedad llamada length aquí.
‫Y también voy a agregar un constructor.
‫Tan público Kube.
‫Y cada vez que quiero crear un cubo, necesito pasar una longitud.
‫Entonces eso es lo que estoy diciendo aquí.
‫Y mientras estoy en eso, también voy a agregar un nombre.
‫Como puede ver, estamos usando herencia aquí porque el nombre no está definido en Cuba.
‫Está definido en forma.
‫Bien, entonces puedo establecer el nombre de la variable aquí y voy a establecer la longitud a la longitud que se
‫me pasó.
‫Entonces, la longitud de la propiedad será la misma que la longitud que se pasa una vez que creamos un objeto de
‫tipo.
‫P Entonces esa es la idea detrás de esta variable.
‫Y luego podemos implementar este método de volumen y simplemente podemos devolver algo.
‫Entonces necesita devolver un doble.
‫Derecha.
‫Entonces, necesitamos devolver algo que se base en el doble y para calcular el volumen de un cubo y, por lo tanto, estoy
‫usando un cubo que tiene la misma longitud en todos los lados.
‫Así que solo voy a decir longitud a la potencia de tres.
‫Entonces Magpul longitud tres, eso significa que va a calcular la longitud, los tiempos, la longitud, la longitud de los tiempos.
‫está bien.
‫Así que este es nuestro volumen y devolverá este valor.
‫Ahora podemos seguir adelante y también podemos implementar este método llamado obtener información.
‫Entonces, lo que voy a hacer es copiarlo y ahora no usaré la palabra clave virtual, sino que
‫anularé la palabra clave porque quiero anular el método para obtener información de mi padre.
‫Ahora, aquí, si lo hago, lo que puedo hacer es llamar también para obtener información de mi clase base, lo que significa que en
‫este caso también llamará a obtener información de la forma que dice, OK, entonces va a llame a
‫este método aquí.
‫Lo que significa que ejecutará este código y luego ejecutará cualquier código que agreguemos en la parte inferior.
‫Entonces, voy a agregar un pequeño texto aquí y va a decir que el cubo tiene una longitud de y luego voy a pasar
‫la longitud aquí.
‫Así que, por supuesto, también podría calcular el volumen aquí, pero te lo dejo a ti.
‫Entonces, si quieres hacerlo, siéntete libre.
‫Está bien.
‫Así es como podemos.
‫Continúe y cree una clase que heredará de otra clase que sea abstracta.
‫Ahora, como un pequeño desafío para ti, y solo voy a pausar el video una vez, debes
‫comenzar con un desafío.
‫Entonces, la idea ahora es crear otra forma, que es donde en nuestra clase, que está heredando de la forma y
‫la forma debería ser una esfera, ahora implemente el mismo tipo de funcionalidad que puede ver aquí
‫para Esfera.
‫Está bien.
‫Buena suerte.
‫Publica un video e intenta hacerlo.
‫Está bien.
‫Así que espero que lo hayas probado.
‫Voy a crear una nueva clase aquí y voy a llamar a esta esfera de clase así.
‫Si.
‫Y esta clase debería heredar la forma.
‫Y, por supuesto, necesito implementar mi clase abstracta, lo que significa que necesito implementar este método
‫de volumen ahora aquí, puedo, por supuesto, volver a calcular dónde tengo una propiedad.
‫Pero esta vez una propiedad útil no sería la longitud, sino el radio porque calculamos el volumen
‫de manera diferente en una esfera que en un cubo.
‫Y no lo hicimos en forma porque una forma por sí sola no puede tener volumen.
‫Derecha.
‫Si no se define como guerra, no podemos calcular el volumen, digamos, porque no sabemos qué tipo de
‫forma tiene.
‫Derecha.
‫Es por eso que necesitamos esas cláusulas que heredan de la forma y que implementan la funcionalidad.
‫Entonces ahora puedo seguir adelante y crear un constructor, una esfera pública y un radio doble.
‫Entonces necesitamos un radio y luego podemos seguir adelante y establecer el nombre de la esfera, que debería
‫ser esfera, y deberíamos tener un valor de propiedad de radio.
‫Así que asignamos el radio que se nos pasa ya que la propiedad radio tiene valor.
‫Está bien.
‫Ahora que tenemos eso, podemos calcular el volumen.
‫Entonces, ahora, en lugar de lanzar una excepción aquí, quiero calcular el volumen de mi esfera.
‫Y para hacerlo, necesito PI y necesito el siguiente cálculo.
‫Entonces, matemáticas que el radio de Powell a la potencia tres y todo eso multiplicado por tres dividido por o con cuatro dividido
‫por tres.
‫Está bien.
‫Así es como calculamos el volumen y ahora podemos seguir adelante y también implementar para obtener el método Infl.
‫Así que voy a copiarlo en cuatro de mi cubo y ser vago.
‫Y entonces copie esta parte aquí e implemente lo mismo.
‫Así que solíamos anular la palabra clave nuevamente.
‫Es exactamente el mismo nombre que tenía en la clase de forma.
‫Y usamos la información de Baskette aquí para llamar al método que sea aquí.
‫Entonces, cualquiera que fuera el cuerpo del método allí.
‫Y luego, en lugar de pasar la longitud o decir algo sobre la longitud, vamos a decir
‫algo sobre el radio y el cubo.
‫En este caso, la esfera tiene un radio de radio.
‫Está bien.
‫Ahora que tenemos todo eso, lo que podemos hacer ahora es seguir adelante y crear objetos de todas
‫esas clases diferentes.
‫Así que no voy a decir hola mundo aquí.
‫En cambio, voy a crear un montón de formas.
‫Así que voy a decir, está bien, por favor dame una serie de formas y será una nueva esfera con un radio de cuatro
‫y un nuevo cubo con un radio de tres.
‫Y en este caso, en realidad, tiene la longitud de tres porque Cube no tiene un radio, tiene una
‫longitud.
‫Y luego quiero ejecutar algo para cada una de las formas hasta ahora, forma en formas.
‫Yo quiero.
‫Repase todos ellos y este caso, solo los dos.
‫Pero lo que quiero tener es información en forma.
‫Por lo tanto, se debe llamar a obtener información.
‫Y quiero escribir algo como esto.
‫Y en este caso, cero.
‫Será el nombre y luego quiero mostrar el volumen, así que quiero que el nombre tenga un volumen de.
‫Y luego, por supuesto, quiero saber el volumen de esta pieza que estamos viendo, así que dale forma
‫a ese nombre y dale forma a ese volumen.
‫Bien, aquí es importante que llamemos al método de volumen, ¿verdad?
‫No es solo un.
‫Propiedad, entonces tenemos el control, Red Line tiene un volumen de en este caso, el nombre tiene un volumen de volumen, por
‫lo que solo calculará el volumen.
‫Bien, ahora probemos esto.
‫Veamos qué está pasando aquí.
‫Lo que hemos creado y lo que somos, por lo que tenemos una línea vacía aquí.
‫Entonces dice que esto es una esfera.
‫La esfera tiene un radio de cuatro.
‫La esfera tiene un volumen de doscientos sesenta y ocho coma cero ocho.
‫Y luego esto es un cubo.
‫Este Kupers, una longitud de tres a Cube tiene un volumen de veintisiete.
‫Está bien.
‫Entonces puede ver que este es un código muy simple que escribimos aquí, pero ya explica o muestra la mayor parte de
‫la funcionalidad que necesitamos saber sobre las clases abstractas.
‫Ahora, lo bueno es que también podemos usar algunas palabras clave más que aún no hemos usado.
‫Y como este video se está alargando lo suficiente, diría que lo hacemos en el siguiente video.
‫Así que nos vemos allí.