Тёмный

Clase abstracta vs interfaz. ¿Cuál elegir? - # 1 Dilemas de un desarrollador 

Manuel Zapata
Подписаться 45 тыс.
Просмотров 43 тыс.
50% 1

Опубликовано:

 

25 окт 2024

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 136   
@lvbernal
@lvbernal 5 лет назад
Gracias por el video, Manuel. Yo uso las clases abstractas para representar "jerarquías de comportamiento" y las interfaces como "contratos comportamentales". Pensarlo de esa forma me ayuda a elegir una u otra. Mis dilemas: - Librerías livianas o pesadas para el frontend (Ractive o Mustache vs. Angular o React). Prefiero las primeras. - SQL u ORM. Solía preferir la segunda, pero ahora estoy más con la primera. - Code First vs. Database First. Solía preferir la primera. - Enum vs. Constantes vs. Parámetros en la BD. Todo un dilema. - Más frameworks sobre el framework (ej. Prism sobre Xamarin). Aunque dicen que simplifican muchas cosas, nunca me han llamado la atención.
@ManuelZapata
@ManuelZapata 5 лет назад
Me gusta tu diferenciación de jerarquías de comportamiento y contratos comportamentales. En cuanto a tus dilemas, son muy interesantes y pasan mucho. Creo que uno de los proximos será "SQL y ORMs" o "enums, constantes y parámetros en la BD". Graciad por el comentario!
@francogarcia2668
@francogarcia2668 4 года назад
@@ManuelZapata Yo ultimamente uso mucho enum para definir constantes. La ventaja es que podes crear constantes ESPECIFICAS como parámetros para metodos, entonces te ahorras el posible problema de que si alguien usa tu metodo, le meta un parametro para el cual no hay caso contemplado. Soy nuevo en esto, asi que no se si lo estoy usando bien.
@tranquiloteov
@tranquiloteov 2 года назад
¿ que diferencia hay entre "jerarquías de comportamiento" y "contratos comportamentales" ? me parece exactamente lo mismo pero con diferentes palabras.
@lvbernal
@lvbernal 2 года назад
@@tranquiloteov Cuando hay una clase abstracta A, y B hereda de ella, se genera una jerarquía: B es A. Pero si tienes una interfaz C, y D la implementa, entonces D "cumple con el contrato C", pero no es C.
@tranquiloteov
@tranquiloteov 2 года назад
@@lvbernal gracias por la aclaración😊👍
@ruekkart
@ruekkart 3 года назад
Una diferencia que aún existe es que la clase abstracta puede tener estado (variables de clase) y la interface no puede tenerlo. Además en algunos casos la clase abstracta puede ser muy útil, como por ejemplo al implementar el patrón template method y solo delegar y obligar a las clases hijas a implementar la parte abstracta del template method.
@xDEKITOx
@xDEKITOx 4 месяца назад
Clase Abstracta: 1.Atributos (Variables de Instancia): Mantienen el estado de los objetos. 2.Constructores: Utilizados para inicializar variables de instancia en las subclases. 3.Métodos Concretos: Proporcionan una funcionalidad base común. 4.Métodos Abstractos: Deben ser implementados por las subclases concretas. Interfaces: 1.Definición de Métodos Abstractos: Contratos de comportamiento sin implementación (hasta Java 7). 2.Constantes: Variables en interfaces son implícitamente public, static, y final. 3.Métodos por Defecto: Métodos con implementación desde Java 8, permiten la evolución de la interfaz sin romper el código existente. 4.Métodos Estáticos: Métodos que pueden ser llamados sin instancias. 5.Herencia Múltiple: Una clase puede implementar múltiples interfaces. 6.No Puede Tener Estado: No puede mantener variables de instancia.
@wilmerbz
@wilmerbz 5 лет назад
Interesante... no sabía lo de los default methods en las interfaces. Estoy de acuerdo contigo. Las interfaces, a menos que queramos compartir funcionalidad entre clases concretas (aunque ya con los default methods no aplicaría mucho este argumento), siguen siendo más flexibles y limpias.
@ManuelZapata
@ManuelZapata 5 лет назад
Gracias por tu comentario, Wil! Sí, el tema de los default methods ha ido tomando relevancia poco a poco. A mi personalmente no me convencen, pero eso es otro tema.
@bonaoenchelcha
@bonaoenchelcha 4 года назад
es nuevo, bueno al menos en c#
@diegogr.cabanillas8042
@diegogr.cabanillas8042 4 года назад
Estoy desarrollando un videojuego implementado los principios SOLID y llegué a este a dilema jajaja, gracias. Me aclaraste muchas dudas, por más que ya sabía los conceptos a veces necesito que alguien me dé un empujoncito jeje
@ManuelZapata
@ManuelZapata 4 года назад
Excelente Diego 🙌. Para eso estamos.
@albuslrc
@albuslrc 3 года назад
A mi me gusta el siguiente ejemplo: "Si tu pato de hule puede volar no estas utilizando la abstracción correcta." En ese ejemplo existen 2 objetos uno un pato de carne y hueso y el otro un pato de hule, se define la clase abstracta ave, porque lo que me interesa no es una instancia de un ave, sino un pato de hule o un pato de carne y hueso, el dilema de la interfaz se resuelve fácil en este ejemplo ya que si en la clase abstracta definimos el método volar cometeremos un error por permitir que un pato de hule que hereda de la clase abstracta ave tenga una acción que no es capaz de implementar. Entonces ahí es donde aparece la interfaz, se crea la interfaz volar o volador, y cada objeto ve si la implementa.
@juancarlosariasposada7720
@juancarlosariasposada7720 2 года назад
Hola, muchas gracias, con este ejemplo de verdad me quedó mucho más claro. Lo pongo en mis palabras: Si por ejemplo tengo una tienda de animales y además vendo juguetes de animales. Si creo una Clase Abstracta Ave que tiene un comportamiento o método Volar() a la clase Pato la extiendo y queda muy bien pero a la Clase Pinguino y a la Clase PatoHule si le extiendo la clase abstracta estoy poniendo un comportamiento que realmente ese objeto no puede hacer. En este caso es mejor crear interfaces IAnimalVolador y IJugueteVolador y cada clase implementa o no la interfaz si es que la necesita. Saludos.
@r.amilcarrivasmarquez7488
@r.amilcarrivasmarquez7488 3 года назад
Muy buen video, me acabo de enterar que las interfaces permiten métodos por defecto, que no parecen ser muy distintos a los métodos virtuales, las clases abstractas te permiten tener campo y propiedades, no sé si las interfaces. Creo que usar una clase abstracta o interfaces es asunto de semantica, la clase abstracta significa en muchos casos qué se está implementando algoritmos y que la subclase puede implementar una parte del mismo, comparten responsabilidad. Y la interfaz solo te avisa del contrató, si estás usando un framework o tienes una arquitectura plugin talvez tengas que heredar de una clase abstracta y podrás usar campos que Delos que no tienes acceso pero la clase abstracta si, ayuda a la ocultación sin quitar funcionalidad. La interfaz es solo el contrato y eso es muy bueno.
@gustavoayala7385
@gustavoayala7385 3 года назад
Hola gracias por el vídeo, me aclaró algunos conceptos. Actualmente uso clases abstractas cuando quiero que un objeto tenga un comportamiento por defecto que lo define conceptualmente, pero cuyos herederos deben definir una parte específica. Por ej. un service provider (abstracto), puede tener comportamiento y métodos para interactuar con un IoC container, pero las implementaciones concretas deben implementar métodos para vincular los servicios (esto es, los objetos, funciones, etc.) a sus identificadores (por ej. nombre de clase/interfaz, palabra clave, etc.).
@analarma1
@analarma1 5 лет назад
master, como siempre excelente información, yo personalmente creo que esta incertidumbre se da sobretodo cuando no hay un diseño previo. yo utilizo las interfaces sobre todo para la implementación de patrones de diseño y para temas de contratos de funcionalidad,
@ManuelZapata
@ManuelZapata 5 лет назад
Gracias Andrés! Sí, en patrones de diseño y en contratos se utilizan muchísimo. Unos buenos lineamientos de desarrollo alivian este tipo de dudas.
@MarkTin2000
@MarkTin2000 4 года назад
Excelente video, muy buena explicación. Igual yo prefiero las interterfaces, el código es mas limpio y ordenado con las interfaces.
@ManuelZapata
@ManuelZapata 4 года назад
De acuerdo contigo Majestic Gold!
@elbranching
@elbranching 4 года назад
Otro dilema: Renderizado web del lado del servidor o del lado del cliente.
@ManuelZapata
@ManuelZapata 4 года назад
Apuntado. Gracias Elkin!
@efrainespaderocanaviri2741
@efrainespaderocanaviri2741 3 года назад
Las interfaces pueden tener propiedades(campos o atributos)? en c# puedo hacer esto en una interface (int Name {get; set;} eso lo veo como una propiedad y me cofundio un poco.
@andresalexanderbarreragara1041
@andresalexanderbarreragara1041 3 года назад
Hola Manuel, particularmente yo prefiero usar clases abstractas cuando puedo tener métodos que las clases hijas pueden usar, las interfaces las uso como contratos para los consumidores de las clase, con SOLID el uso de interfaces es muy fuerte. Saludos y gracias por los videos
@marcomoreno8139
@marcomoreno8139 5 лет назад
Excelente video muy claro en cuanto a las "diferencias". También prefiero la flexibilidad de interfaces y comparto con que todo nace de un buen diseño, caso contrario nos ponemos a divagar y podemos pasar mucho tiempo en si lo uno o lo otro. Mi dilema SQL vs ORM actualmente utilizo SQL, otra JavaEE vs Spring 😬😬 esas principalmente, saludos hermano desde Ecuador
@ManuelZapata
@ManuelZapata 5 лет назад
Gracias por compartir tu opinión sobre este dilema! Ese dilema de JavaEE vs Spring está buenísimo. Saludos!
@jordyrobertoruizmeza5814
@jordyrobertoruizmeza5814 4 года назад
La verdad me ayudó mucho tu vídeo gracias
@ManuelZapata
@ManuelZapata 4 года назад
Excelente, Jordy. Con todo gusto.
@josedavidmunozgomez6461
@josedavidmunozgomez6461 5 лет назад
Hola muy buen vídeo, podrías hablar de como diseñar las interfaces ? ,
@ManuelZapata
@ManuelZapata 5 лет назад
Hola Jose David, gracias por la sugerencia! Voy a ver que contenido creamos al respecto :)
@miguelmoncada5458
@miguelmoncada5458 5 лет назад
Excelente propuesta!
@pablomaidana7420
@pablomaidana7420 5 лет назад
Interesante vídeo. Puede hablar sobre la aplicación de SOLID en la vida real, gracias y saludos.
@ManuelZapata
@ManuelZapata 5 лет назад
Todos los ejemplos de mi mini curso de principios de diseño SOLID viene de la vida real: manuelzapata.co/mini-curso-principios-de-diseno/ Saludos!
@eliasbrd4087
@eliasbrd4087 3 года назад
Muy buen contenido. Saludos.
@javiopakan2
@javiopakan2 4 года назад
Saludos Manuel, Buen día.... Me gustaría saber si puedes hablar sobre: Cuándo se deben usar propiedades dentro de una interface????
@ManuelZapata
@ManuelZapata 4 года назад
Hola Francisco. Aún si el lenguaje de programación lo permite, yo nunca pondría propiedades es una interfaz. Me parece que solo se deben usar para modelar comportamientos y no datos. Saludos!
@javiopakan2
@javiopakan2 4 года назад
@@ManuelZapata gracias...
@miguelmavo3921
@miguelmavo3921 5 лет назад
cuandro programar usando composicion y cuando usando herencia de objetos?
@ManuelZapata
@ManuelZapata 5 лет назад
Buenísima pregunta. Anotada!
@ManuelZapata
@ManuelZapata 4 года назад
En mi mini curso de Programación Profesional con Objetos hablo sobre el tema: manuelzapata.co/mini-curso-programacion-profesional-objetos/
@pitosauriorex3674
@pitosauriorex3674 3 года назад
cuando me preguntan mis problemas en progra yo: nadie se había importado tanto por mi.jpg
@pat_mic
@pat_mic 2 года назад
hola, creo uno de los puntos más sustanciales entre Arq y dev es saber interpretar el uml a código diferencias entre composición, agregación... como se codifican lo que el Arq diseña
@victorisrael4956
@victorisrael4956 2 года назад
Muchas gracias!!!
@ManuelZapata
@ManuelZapata 2 года назад
Con todo gusto!!
@ghss5088
@ghss5088 4 года назад
Bueno tuve que utilizar una interface en una clase abstracta, ya que tenía productos que compartían exactamente la misma lógica de negocio y también tenía mis excepciones. Bueno sobre estás reglas excepcionales simplemente sobrescribí. Esto me sirvió para evitar mucho código duplicado, pero también me trae un problema difícil de percibir, ya que si sobrescribes mal el método de la clase abstracta, pues irá a buscar el método de la clase padre y no te darás cuenta que no estás trabajando con el método sobrescrito y su funcionalidad, ya que la clase abstracta es muy difícil de rastrear a la primera.
@ManuelZapata
@ManuelZapata 4 года назад
Pero en eso no te ayuda el compilador? O por lo menos el autocompletar del IDE y los tipos de datos de los parámetros te pueden dar ciertas pistas.
@andresgaleano2379
@andresgaleano2379 Год назад
En la practica me va super bien, pero en la teoria horrible, he perdido algunas oportunidades por no tener propiedad al responder una pregunta de este tipo, gracias por esta información.
@EnrriqueCv
@EnrriqueCv 4 года назад
Muchas gracias me sirvio mucho tu contenido
@ManuelZapata
@ManuelZapata 4 года назад
Con gusto, Enrrique!
@miguelmoncada5458
@miguelmoncada5458 5 лет назад
Hola, muy buen video. En cuanto a los estados y comportamientos? Las interfaces tambien lo tienen?
@ManuelZapata
@ManuelZapata 5 лет назад
Las interfaces solo definen comportamientos. Las clases si pueden tener tanto estado cómo comportamiento.
@mackenriquez291
@mackenriquez291 5 лет назад
Creo que hay confusión cuando alguien te pregunta si has trabajado con API REST FULL
@ManuelZapata
@ManuelZapata 5 лет назад
Entiendo Mack. A veces existen dudas acerca de si REST está bien implementando o no. Lo anoto para futuros vídeos de la serie. Gracias!
@diegoosorio3825
@diegoosorio3825 2 года назад
Que sentido tiene definir una Interfaz como atributo de una clase?, o he visto que hay métodos que retornan interfaces, no entiendo?.. Muchas gracias por tu ayuda
@yersonescolastico2698
@yersonescolastico2698 4 года назад
Me gustaría que hicieras un video sobre los árboles de expression es algo como esto: List GetList (Expression expression). Entiendo todo lo que está ahí menos la palabra Expression antes del delegado Func.
@ManuelZapata
@ManuelZapata 4 года назад
Hola Yerson, te recomiendo que visites el canal de nuestro amigo Héctor de León. Tiene contendo super extenso en C# y quizá pueda ayudarte. Saludos! ru-vid.com/show-UCDUdeFslCNoM29MAlZOfdWQ
@edwardmuri5895
@edwardmuri5895 4 года назад
las interfaces sin dudas ofrecen una flexibilidad mucho mayor y con la posibilidad de definir comportamiento general en ellas con los default methods no veo razon para volver a usar clases abstractas a menos que se de un caso muy particular
@ManuelZapata
@ManuelZapata 4 года назад
Sin ser fan de los default methods, es muy cierto que con ellos le quitan cada vez mas casos de uso a las clases abstractas.
@francogirolami7899
@francogirolami7899 3 года назад
y los metodos template?
@victorpinedo5121
@victorpinedo5121 5 лет назад
Alguna vez tuve un Dilema y era, usar bases de datos documentales como las que me ofrece Firebase de Google o usar las de EERR tradicionales como las de MySQL, PostgreSQL y demás, la verdad a veces no sabía cuando usar una u otra.
@ManuelZapata
@ManuelZapata 5 лет назад
Y cómo resolviste ese dilema? Sobre eso, definitivamente tendremos un vídeo en el canal. Gracias por tus aportes!
@despovizcaino8622
@despovizcaino8622 4 года назад
Hola, enhorabuena por su canal, he visto algunos videos y me han sido de gran ayuda, pero tengo un dilema, al hilo de las clases y métodos "static" en la web... ¿podría haber datos cruzados entre 2 usuarios por ejemplo, que se conectasen a la vez? ¿o sería el servidor el que creara distintos "espacios de trabajo" (no se como llamarlo) para cada usuario con sus propios ensamblados? no se si me he explicado bien, un saludo y gracias
@ManuelZapata
@ManuelZapata 4 года назад
Eso depende mucho de la implementación Despo. De como utilices el contexto de la aplicación web y como manejes las sesiones. Ambos escenarios pueden ocurrir. Saludos!
@DiegoBermudez1
@DiegoBermudez1 5 лет назад
Hola, gracias por el video. Cuando realmente deberia definir en mi codigo si debo crear interfaces o no.
@ManuelZapata
@ManuelZapata 5 лет назад
Hay varios escenarios, Diego Bermudez. El más común es que uses la interfaz para indicar que una clase tiene cierto comportamiento. Por ejemplo, cuando en Java usas la interfaz Serializable, indicas que la clase tiene la capacidad de ser serializada.
@paulkremser2336
@paulkremser2336 3 года назад
Yo me veo muchas veces haciendo interfaces vacías porque me sirven para tratar varias clases como respuesta de un método o como argumento. Y la verdad me hace algo de ruido pero no se me ocurre como evitarlo.
@melchiah6603
@melchiah6603 5 лет назад
Desarrollo híbrido o nativo (aplicaciones móviles).
@ManuelZapata
@ManuelZapata 5 лет назад
Uff.. excelente dilema. Lo anoto en la lista. Gracias Dissek.
@bocito666
@bocito666 4 года назад
De que lenguaje de progración hablas?
@TkmMusicProduction
@TkmMusicProduction 2 года назад
Yo uso mas las interfaces porque ayudan a implementar mejor SOLID y específicamente el dependency injection. Saludos 👍
@ManuelZapata
@ManuelZapata 2 года назад
🙌
@raul7254
@raul7254 4 года назад
Yo voy a usar Interfaces para simular la herencia múltiple y en todo lo demás clases abstractas.
@ManuelZapata
@ManuelZapata 4 года назад
Tener una estandarización ayuda a evitar confusiones, @sabioyaoming. Buena idea.
@luisalberto1146
@luisalberto1146 3 года назад
Hola, yo siempre he tenido está duda: ya ven que dicen que no hay que repetir tanto código. Y mi pregunta es: ¿Cuánto es lo máximo o lo mínimo que se puede repetir código que se podría considerar correcto? Por ejemplo en este caso de las interfaces muchas veces se tiene que repetir código al implementarlas
@ManuelZapata
@ManuelZapata 3 года назад
Si estás repitiendo mucho código cuando implementas las interfaces, seguramente te falta una clase base que implemente la interfaz. Luego, de esa clase base, pueden heredar las demás.
@everviloria9414
@everviloria9414 10 месяцев назад
¿API. API REST, Servicio Web?
@dairofrenandoocampogutierr4410
@dairofrenandoocampogutierr4410 3 года назад
Manuel saludos, una pregunta una interfaz en java es como un mixin en dart ?
@jorgeagoiz5268
@jorgeagoiz5268 4 года назад
Buen contenido!! un saludo
@ManuelZapata
@ManuelZapata 4 года назад
Gracias Jorge! No olvides suscribirte al canal 🙂
@Christian-ho9qm
@Christian-ho9qm 3 года назад
Muy buena Manuel esta sección con pequeños tips. A me gustaría que trates el tema de bloqueos en BDs. Recuerdo hacer en vb6 bloqueos optimistas y pesimistas. Y me gustaría saber cómo evoluciono eso, si es necesario en ciertas aplicaciones, si pasa a hacer parte de la función de un gestor de BDs. Bueno nada eso, espero verte en un video al respecto. Saludos.
@ManuelZapata
@ManuelZapata 3 года назад
No conozco sobre el tema, Christian, pero lo consideraré. Gracias!
@SergioAdonis
@SergioAdonis 4 года назад
Autogenerated primary keys or controlled sequences by some kind of domain service ??
@ManuelZapata
@ManuelZapata 4 года назад
Excelente dilema, Sergio. Anotado. Gracias.
@joelcruz6689
@joelcruz6689 4 года назад
Las interfaces entonces también pueden iniciar jerarquías? o solo las clases abstractas.
@ManuelZapata
@ManuelZapata 4 года назад
Tanto las interfaces como las clases abstractas pueden iniciar jerarquías. Saludos Joel.
@jvilce17
@jvilce17 4 года назад
buen video!
@ManuelZapata
@ManuelZapata 4 года назад
Gracias Juan!
@marc6p6l6
@marc6p6l6 3 года назад
¿Las clases abstractas se pueden multi heredar? Apreciaría tu respuesta.
@javi68yt2
@javi68yt2 3 года назад
La herencia múltiple no depende de que la clase sea abstracta o no, sino que el lenguaje lo soporte.
@FellTheSky
@FellTheSky 4 года назад
muy buen video. Aunque no logro entender que sentido tienen las interfaces cuando no podías crear métodos por defecto. Supongamos que tengo un programa que sé de antemano que va a ser muy grande. Y tengo una serie de operaciones que quiero pre definir para que se hagan de la misma manera en todo el programa. Cual sería la mejor manera de implementar eso? Viendo este video, una interfaz con los métodos default de por ej: compra-venta, y luego implementar eso en las clases que necesiten realizar operaciones o modificaciones. Pero de la forma anterior, si yo creara esa interfaz solo podría declarar los métodos y no definirlos. Por lo que tendría que en cada implementación de esa interfaz definir todos los métodos de esa interfaz. Si eso es así, que sentido tiene tener la interfaz, de todas maneras tendría que definir el método en todas las clases. La única ventaja que le veo es que obligarías a todas las clases a implementar todos los métodos, por lo que habría cierta uniformidad...
@ManuelZapata
@ManuelZapata 4 года назад
Es muy buena tu pregunta. Aún sin métodos por defecto, las interfaces siguen teniendo muchísimo valor. Su principal objetivo es definir el comportamiento que se espera tengas las clases que la implementan. Las interfaces no están pensadas para reusar el código dentro de los métodos. Para esto, puedes crear clases normales o clases abstractas. Ahora, cuando dices "Supongamos que tengo un programa que sé de antemano que va a ser muy grande. Y tengo una serie de operaciones que quiero pre definir para que se hagan de la misma manera en todo el programa. Cual sería la mejor manera de implementar eso?". Esto no requiere una interfaz. Puedes usar otras herramientas. La interfaz te sirve cuando vas a tener múltiples maneras de hacer algo.
@jmrey_personal
@jmrey_personal 4 года назад
Me gustaría abordar el tema de realizar un software extensible por tercero. En concreto extensible tanto en el lado del cliente como el del servidor. Estoy pensando en un esquema UI (Vue) + API (REST). Como hacer que los terceros puedan realizar plugins? y otro dolor de cabeza, En el servidor? en el cliente? y donde ubicar la logica de negocio base? y si luego quieren extenderla.. -_-' como vees.. tengo un lio con la arquitectura core y su futuro XD
@ManuelZapata
@ManuelZapata 4 года назад
Buenos dilemas! Por aquí 3 videos que pueden ayudarte: Arquitectura de plugins: ru-vid.com/video/%D0%B2%D0%B8%D0%B4%D0%B5%D0%BE-BQ6ydks56D8.html Consejos para mejorar la lógica de negocio: ru-vid.com/video/%D0%B2%D0%B8%D0%B4%D0%B5%D0%BE-fdnqf0qZUbw.html ¿Lógica de negocio en el cliente o en el servidor? ru-vid.com/video/%D0%B2%D0%B8%D0%B4%D0%B5%D0%BE-SPmbxvvT7Aw.html
@jmrey_personal
@jmrey_personal 4 года назад
@@ManuelZapata ¡Hola Muchas gracias por tu rápida respuesta y felicidades por el contenido del canal, es de alta calidad y genial! Hacía falta algo así. La conclusión del video, la cual comparto, es que la lógica de negocio idealmente debería estar en el servidor. Por temas de control, no duplicidad, etc.. Allí incluso se puede realizar el patrón hook o plugin. El problema y la duda que no he sabido resolver en tus videos, es como conseguir esto con un modo desconectado. Como solucionarías tu este problema? ¿Conoces algún patrón de ejecución de lógica online, offline y posterior sincronización? ¿O transporte de lógica para trabajar offline sin duplicar? Yo le doy vueltas a algo así como crear una encapsulación de lógica de negocio offline, la cual implemente comportamiento online, comportamiento offline y su posterior sincronización. La cosa es que se acerca mucho a la peor de las soluciones, la distribución de la lógica de negocio entre cliente y servidor, y esta historia evoca un trágico final. XD XD Ideas? ¿Patrones? :’(
@angelfigueroa6662
@angelfigueroa6662 3 года назад
Las interfaces simse pueden instanciar? Eso no me quedó claro
@ManuelZapata
@ManuelZapata 3 года назад
No se pueden instanciar, Angel.
@EdRawrDev5813
@EdRawrDev5813 4 года назад
Interfaces vs delegates plisss!!! que onda salvenme :3 btw no es para la escuela , ya soy profesionista pero me ando afilando en teoria.
@ManuelZapata
@ManuelZapata 4 года назад
¿Por qué consideras que uno puede ser alternativa del otro?
@alvarogonzalez2841
@alvarogonzalez2841 4 года назад
hola muchas gracias, me gustaria saber como utilizar en java, los componentes de un jframe en otras clases, sin necesidad de volverlos publicos, es decir tengo en mi jframe una tabla, pero quiero que todos los metodos de llenar, consultar, borrar etc, no esten dentro del jframe sino en otra clase aparte y que actualice el jframe en tiempo real, al ejecutar dichos metodos. gracias nuevamente
@ManuelZapata
@ManuelZapata 4 года назад
Hola Alvaro, Lo que yo haría es crear una clase interna en el JFrame, y creo un getter para obtenerla. Al ser la clase interna, podría acceder algunos los objetos privados o protegidos en el JFrame sin tener que exponerlos. Qué opinas? Si ya lo resolviste, sería interesante saber como lo hiciste.
@alvarogonzalez2841
@alvarogonzalez2841 4 года назад
@@ManuelZapata muchas gracias, aún no lo he resuelto, pero se me ocurrió crear una clase aparte que reciba como parámetro el jframe y desde esa clase manipular los elementos, y hacer los getters y setters necesarios. Pero como no te digo aún no lo resuelvo, sólo es una idea que no he probado
@alejandromartinez-gj4tm
@alejandromartinez-gj4tm 4 года назад
Que alguien me saque de la duda, ¿se puede usar la inyección de dependencias pasando una clase abstracta en vez de una interfaz? De entrada pensaría que no es lo mismo, pero puedo estar equivocado.
@ManuelZapata
@ManuelZapata 4 года назад
No es común usar una clase abstracta. Pero tampoco veo ningún impedimento por el cual no se pueda hacer.
@alejandromartinez-gj4tm
@alejandromartinez-gj4tm 4 года назад
@@ManuelZapata Muchas gracias por resolverme esa inquietud.
@BreegBenjamin
@BreegBenjamin 4 года назад
Muy buen vídeo. Pero creo que cabe aclarar que las interfaces no tiene propiedades, las clases abstractas si tienen propiedades, en el caso de Java y C#. Esta puede ser una diferente sustancial. y en algunos lenguajes de programación como Dart, cuando extiendes de una clase abstracta, la clase derivada debe implementar los métodos y las propiedades, es bastante curioso.
@ManuelZapata
@ManuelZapata 4 года назад
Gracias por el aporte Ernesto!
@BreegBenjamin
@BreegBenjamin 4 года назад
@@ManuelZapata Gracias Manuel, muy buen contenido el del canal. Poco se habla de Arquitectura de software en youtube.
@MrElmarqueli
@MrElmarqueli 4 года назад
Hola yo utilizo VB quisiera saber si puedo implementar tambien en vb los procedimientos por default
@ManuelZapata
@ManuelZapata 4 года назад
No tengo idea, la verdad. Ese es un feature de C# 8, pero no sé si fue portado a VB.NET.
@walterjosesuarezdelacruz1495
@walterjosesuarezdelacruz1495 5 лет назад
Hola q tal, tengo una duda, pero es sobre instanciar objetos. Por ejemplo creo la clase Empleado a la cual le digo q implemente la interface Comparable, la cual ya esta construida en la api de java. Cual es la diferencia de instanciar un objeto de estas 2 formas: Empleado elnuevo=new Empleado(); O de esta forma Comparable elnuevo=new Empleado();
@ManuelZapata
@ManuelZapata 5 лет назад
Hola @Walter. El tipo que le pongas a la variable te define los métodos y atributos que podrás usar, SIN tener que hacer un cast. Por ejemplo, si la variable es de tipo Comparable, podrías llamar el método compareTo(). Si la variable es de tipo Empleado, podrías llamar métodos como getNombre, getApellido. Espero que te haya quedado claro.
@walterjosesuarezdelacruz1495
@walterjosesuarezdelacruz1495 5 лет назад
Humm, no no entiendo a cual variable t refieres, o es al objeto elnuevo, me suscribiré a ver si subes un ejemplo de esto o de otros temas importantes
@ManuelZapata
@ManuelZapata 5 лет назад
Me refiero a la variable elnuevo, @@walterjosesuarezdelacruz1495. Dependiendo del tipo con que la declares (Comparable o Empleado), así mismo serán los métodos que podrás usar. Pero en ambos casos, será un objeto Empleado. Bienvenido al canal!
@cineenserio01
@cineenserio01 5 лет назад
Mi principal problema es para resolver los problemas, la parte de codificarlo ya es mucho mas sencilla, como puedo mejorar mi capacidad de resolver problemas?
@ManuelZapata
@ManuelZapata 5 лет назад
No te tengo una respuesta exacta, pero te puedo contar algunas cosas que me han servido: 1. Pensar el problema en términos de entradas, salidas y proceso. 2. Dividir el problema en partes y no tratar de abarcarlo todo de una. 3. Pensar primero en la solución antes de tocar una sola línea de código. 4. Practicar mucho.
@cineenserio01
@cineenserio01 5 лет назад
@@ManuelZapata muchas gracias bro
@barbaradalonso7265
@barbaradalonso7265 2 года назад
Una vez me preguntaron porque usaria interfase en vez de clase abstracta?, alguien sabe cual seria la respuesta mas adecuada
@ronaldbarba3897
@ronaldbarba3897 2 года назад
Como lo dice en el video, cuando quieres hacer herencia múltiple, es la principal diferencia
@MrElmarqueli
@MrElmarqueli 4 года назад
Hola mi problema es que no entiendo como sirve realmente esto de la iterface porque no en tido com hago para conectar lo que es la clase y la iterface es decir tengo la clase persona con sus atributos metodos y propiedades y codigo que ejectutan tales o cuales acciones bien esto esta bien ahora creo la iterface IPersona con sus porpiedades y metodos de Calse persona ok hasta aca bien, pero creo una clase Empleado y a esta le quuiero implementar la clase Persona pero lo hacemos por la interface pero que pasa creo la clase Empleado todo bien con la implementacion de porpiedaes y metodos de iPersona pero y elcodigo que tengo en Clase persona no me aparece como se utiliza como se conecta realmente con la clase Persona la cual tiene el codigo de los procedimientos etc. Espero se me halla entendido dejo un codigo de lo que tengo: VB Public Class ClasPersona Private _Nombre As String Private _Apellido As String Private _FechaNacimiento As Date Private _Edad As Integer Public Property Nombre As String Get Return _Nombre End Get Set(value As String) _Nombre = value End Set End Property Public Property Apellido As String Get Return _Apellido End Get Set(value As String) _Apellido = value End Set End Property Public Property FechaNacimiento As Date Get Return _FechaNacimiento End Get Set(value As Date) _FechaNacimiento = value Call CalculoEdad() End Set End Property ReadOnly Property Edad As Integer Get Return _Edad End Get End Property Public Sub CalculoEdad() _Edad = (Now.Year - _FechaNacimiento.Year) End Sub End Class Public Class CEmpleado : Implements IPersona Private _Nombre As String Private _Apellido As String Private _FechaNacimiento As Date Private _Edad As Integer Public Property Nombre As String Implements IPersona.Nombre Get Return _Nombre End Get Set(value As String) _Nombre = value End Set End Property Public Property Apellido As String Implements IPersona.Apellido Get Return _Apellido End Get Set(value As String) _Apellido = value End Set End Property Public Property FechaNacimiento As Date Implements IPersona.FechaNacimiento Get Return _FechaNacimiento End Get Set(value As Date) _FechaNacimiento = value End Set End Property ReadOnly Property Edad As Integer Implements IPersona.Edad Get Return _Edad End Get End Property Public Sub CalculoEdad() Implements IPersona.CalculoEdad End Sub End Class lo que no entido es que la implementacion solo me crea la estructura de pero y como se implementa la clase Persona que si tien el codigo, es lo que tengo un rollo en la cabeza
@ManuelZapata
@ManuelZapata 4 года назад
Hola Marco, estos temas de herencia al comienzo pueden ser confusos. En caso de que aún tengas confusión con esto, te recomiendo el tercer video de mi mini curso de objetos: manuelzapata.co/mini-curso-programacion-profesional-objetos/
@audiomotivaciones8675
@audiomotivaciones8675 4 года назад
gracias
@ManuelZapata
@ManuelZapata 4 года назад
De nada!
@danian686
@danian686 3 года назад
Cuando recien estas aprendiendo sobre programacion y terminas aqui.... Creo que voy a tocar con los musicos del titanic mejor.... jajajaj No mentiras quiero alcanzar el nivel de dominar estos temas para aplicarlos; Voy en aprendizaje de POO.
@4631marr
@4631marr 3 года назад
Solo se aprenden estos temas cuando realmente los necesitas. Cuando entiendes que los debes aplicar para solucionar algo.
@carlosozuna9369
@carlosozuna9369 4 года назад
Me dejó más dudas xd
@ManuelZapata
@ManuelZapata 4 года назад
:O Cómo cuáles?
@antoniogonzalez1715
@antoniogonzalez1715 4 года назад
más sin embargo.
@ManuelZapata
@ManuelZapata 4 года назад
Se me fue!
@tsunasawada3445
@tsunasawada3445 5 лет назад
que es poo
@ManuelZapata
@ManuelZapata 5 лет назад
Programación Orientada a Objetos
@davidsabogal6400
@davidsabogal6400 4 года назад
:o
@CarlosRodriguez-wp8fj
@CarlosRodriguez-wp8fj 3 года назад
Yo tengo un dilema XD, en una arquitectura N capas, factory tendría su propia capa? o debería ir dentro de la capa domain como paquete independiente al core? Yo lo hice de la segunda manera.
Далее
ORM vs SQL - #2 Dilemas de un desarrollador
12:00
Просмотров 27 тыс.
Китайка и Красивые Глаза😂😆
00:20
Layered architecture
9:41
Просмотров 57 тыс.
Dependency Injection, The Best Pattern
13:16
Просмотров 862 тыс.
INTERFAZ o Clase ABSTRACTA ❓ Dilemas de la POO
9:54
¿Qué es REST? | Te lo explico en 10 minutos
10:40
Просмотров 25 тыс.
4 PRINCIPIOS de la PROGRAMACIÓN ORIENTADA A OBJETOS
7:55