Introducción
Emprender un proyecto de desarrollo de software, es un reto que nos lleva a pensar en la elaboración de un producto final que cumpla con las características de un software exitoso: Solido, robusto, confiable, escalable, interoperable y lo mejor de todo para quienes estamos desarrollando esgenerar código que pueda ser reutilizado.
Bajo esta premisa surge la necesidad de trabajar con una filosofía de programación orientada a objetos. Ahora bien, en este momento se preguntaran, ¿una filosofía?, la respuesta es sencilla, antes de aprender a programar en un lenguaje orientado a objeto como C# o Vb.net, es importante aprender a pensar, bajo un modelo de desarrollo, con su teoría y su metodología, como lo es la programación orientada a objetos, para encontrar una solución a un problema que se plantee.
Conceptos Fundamentales
Clase:
Vamos a iniciar este concepto con un ejemplo: Para construir un modelo de automóvil se deben haber plasmado una serie de características y funcionalidades que estarán guiando la construcción del mismo. Cada vez que se procede a crear este mismo modelo de auto, se deberá cumplir con las características y funcionalidades predefinidas.
En programación orientada a objeto, una clase define las características y comportamientos comunes de los objetos, en otras palabras la clase es el molde para la creación de los mismos. Para nuestro ejemplo,un plano del modelo del auto es el símil de la clase auto. Aunque la clase especifica las características propias del objeto cada implementación es única tal como sucede en el mundo real pues el valor de sus atributos puede variar, por ejemplo el color, kilómetros recorridos, etc.
Objeto:
Los objetos tienen características y comportamientos que están definidas de la clase de donde se instancian, sin embargo, aunque varios objetos provengan de una clase pueden tener identidad propia; en otras palabras: La identidad es el valor o estado de la propiedad que permite a un objeto diferenciarse de otros. En programación orientada a objetos cada Auto se conocerá como una instancia de la clase Auto.
Pilares de la Programación Orientada a Objetos
Es importante entender los cuatro pilares de la programación orientada a objetos: abstracción, encapsulación, herencia y polimorfismo.
Abstracción:
Como se explico anteriormente, los objetos tienen atributos o características que representan los datos asociados al mismo, estos atributos y sus valores en un momento dado, determinan el estado de un objeto. De igual forma los objetos tienen funcionalidades o comportamientos llamados métodos en la programación orientada a objetos. Con estos métodos accedemos a los atributos de una manera predefinida y se implementan el comportamiento del objeto.
Cuando desarrollemos un software, crearemos muchos objetos, que en algún momento vamos a requerir para resolver una situación planteada. Es aquí donde entra el concepto de abstracción. Con la abstracción podremos tomar lo que hace falta de un objeto del mundo real para el sistema en un momento dado, es captar las características esenciales de un objeto, así como su comportamiento.
Veamos como lo aplicamos a un ejemplo. En un taller mecánico se desea registrar los automóviles que ingresan al mismo. Es decir que vamos a tomar para registro de ingreso Marca, Modelo, Año, Cliente, Rif, Dirección Fiscal, teléfono del cliente. En este Caso tomamos del objeto automóvil solo los datos que necesitamos Marca, Modelo y Año. Del Objeto Cliente, el cliente su RIF, dirección fiscal y teléfono.
Encapsulamiento
El objetivo es «meter todo en una capsula», juntar las piezas que hacen que funcione como un todo. Ejemplo meto el motor dentro del auto.
Polimorfismo
Lograr que un objeto se comporte como si fuese una implementación de otra clase. Ejemplo: Un carro comportándose como una grúa.
Herencia
Tomar características y funcionalidades definidas en otras clases. Ejemplo: Auto hereda de vehículo motorizado. Como grúa también hereda de vehículo automotor.
Las clases no están aisladas, sino que se relacionan entre sí, formando una jerarquía de clasificación. Los objetos heredan las propiedades y el comportamiento de todas las clases a las que pertenecen. La herencia organiza y facilita el polimorfismo y el encapsulamiento permitiendo a los objetos ser definidos y creados como tipos especializados de objetos preexistentes.
Muy Buen Articulo… Gracias por su colaboracion..
Para eso estamos para compartir 🙂
Buenas tardes !!!
En el cuarto párrafo donde esta el ejemplo del taller mecanico:
«En este Caso tomamos del objeto automóvil solo los datos que necesitamos Marca, Modelo y Año. Del Objeto Cliente, el cliente su RIF, dirección fiscal y teléfono.»
no deberia decir :
En este Caso tomamos de la clase automóvil solo los datos que necesitamos Marca, Modelo y Año. Del Objeto Cliente, el cliente su RIF, dirección fiscal y teléfono.
En ese ejemplo estaba usando la palabra objeto como cosa y no en el sentido de programación. Objeto como algo del mundo real.
“En este Caso tomamos del objeto (la cosa real que rueda) automóvil solo los datos que necesitamos Marca, Modelo y Año. Del Objeto (La persona real) Cliente, el cliente su RIF, dirección fiscal y teléfono.”
No creo que esté correcto usar la palabra «objeto» en este contexto, para ese fin. Resulta confuso!
De todos modos, me sirvió mucho la nota.
De cualquier forma está bien, una clase es una descripción genérica de varios objetos que tienen un comportamiento similar
Puede resultar confuso, pero recuerden que en POO todo es un objeto. Las intancias son objetos, los atributos en si son objetos, las clase son objetos, los mensajes entre objetos son objetos… en fin todo es un objeto 😉
Excelente!!!
Muchas gracia, muy buen material
Estoy de acuero!
Excelente Bloc, gracias por tu articulo esta excelente.
Hola a todos,
En vez de «Tomar características y funcionalidades definidas en otras clases. Ejemplo: Auto hereda de vehículo motorizado. Como grúa también hereda de vehículo automotor.», propongo: «Tomar características y funcionalidades definidas en otras clases. Ejemplo: Auto hereda de vehículo motorizado (… una serie de atributos como Número de puertas, tipo de bomper, etc.). Como grúa también hereda de vehículo automotor.», es todo.
Exitos a todos !
Wilson VB
excelente!!..todo claro!!
Sería bueno que haya más ejemplos de abstracción 😀
Gracias!!
mira abstracción quiere decir que sacas solamente lo escencial de un objeto por ejemplo al momento de definir un objeto persona, le asignas los atributos estatura, peso, edad, etc. y sus correspondientes metodos o acciones.
saludos.
Muy buen articulo Ma. Eugenia, gracias!!
No me gusta cómo explicas el polimorfismo. El concepto se refiere a una característica de los lenguajes orientados a objetos de resolver dinámicamente el significado del nombre de un método, el cuál dependerá del estado del programa. Por ejemplo, el método Acelera
está presente en todos los vehículos y tu puedes tener un ejemplar de la clase Persona, que mande llamar a Acelera. Dependiendo de en qué vehículo se encuentre, será la forma en la que el vehículo aumente su velocidad.
Conceptos básicos, que siempre te cuentan de una manera más enrevesada, felicitaciones, simple y claro.
La definición de ENCAPSULAMIENTO esta muy básica, y me atrevería a decir que no sirve como tal, ya que el encapsulamiento no permite diferentes niveles de acceso tanto a métodos como a variables declarados dentro de una clase. en el caso del ejemplo del auto podemos tener un método llamado public acelera(){ …} donde public nos indica que puede ser llamado desde cualquier parte fuera de la clase. Espero sirva mi aportación Saludos!!!
Disculpen es » ya que el encapsulamiento NOS permite diferentes niveles de acceso» 😉
Esta muy bueno y toma mas forma con los comentarios de los propios usuarios, la verdad que son criticas que enriquesen a tu publicacion.
Gracias por el tutorial…ya que estoy iniciando en el maravilloso mundo de la programación…
Exelente articulo, felicitaciones!!!!!
Excelente
no entendi nada
Me gusto mucho, sobre todo la forma popular de la explicación
El articulo es muy bueno pero debería definir los pilares de la poo de una forma mucho más explicita.
Esta interesante, gracias por publicar.
Muy buen contenido .
ThAnK yOu.
Excelente articulo.
Ejemplos muy bien definidos.
Yo tenia entendido que el Polimorfismo era hacer lo mismo pero de diferente manera! = la información +10pts buenísima
Asi es ese es el proposito del polimorfismo. en resumen es reutilizar un nombre y firma de una operacion(nombre de función o subrutina) de una clase padre o superclase y cambiar el método ( la logica de implementación de esa función o subrutina) de la misma en la clase derivada o hija. ojo No confundir con la sobrecarga 😀
excelente pagina.
Waw muchas gracias me quedo muy claro el concepto de clase!!!! Muchas gracias por el articulo. 😀
se entendio 😀
muy bueno
Muy especifico , buen articulo
Muy Claro y Entendible
muy claro mejor que cuando estudiaba
excelente
excelente articulo muy entendible, muchas gracias
ya conocía la POO, pero saber mas de ella es bueno; todos deberíamos saber un poco sobre este teme es muy bueno e interesante
Buen articulo.
Buen articulo. Muchas gracias.
Me gustó mucho el artículo aunque necesité algunas aclaraciones en polimorfismo
Por favor si podían explicar un poco más el concepto de Herencia.
Buen articulo.
Saludos.
muy buena explicacion
Gracias!
es muy interesante y ameno, muy facil de entender, para comenzar este curso tan importante como lo es la ingenieria de software.
atte. graciela margarita rondan
SSS
Está demasiado básico, hay que exponer aun más cosas y con ejemplos más claros.
Excelente blog felicitaciones.
muy bueno de hecho se hacen buenas especificaciones
El aporte fue bueno pero creo que para los que tenemos un poco de conocimiento, esa información es muy vaga, y para los que no tienen nada de conocimiento al respecto creo que desearían que se profundizara mas en los puntos, creo que esto se podría llevar mejor si se extendiera, a la hora de hacer una publicación, un poco mas los ejemplos que damos, pero igual excelente aporte, porque sirvió de base para comenzar una lluvia de ideas, que facilito y enriqueció el tema.
Me queda muy claro conceptos que tenia muy confusos muchas Gracias !
Muy bueno gracias!!!
buen articulo y buena explicacion
Me encanta, esta bien explicito…
Bendiciones…
Muchas Gracias me agradó mucho
Muy bueno, mil gracias
Excelente Articulo (y)
Saludo
excelente
Muy bueno…
Muy buen articulo…es muy didactico
Que buen articulo, aprendí mucho.
El Ejemplo de Estado desde mi punto de vista es incorrecto, deberían ser características o atributos
Me ha dejado un buen sabor de boca, ya tome mis notas de esto, y pues al siguiente curso, la ortografia creo que algunas palabras les falto entonacion o comas, digo no se si es ortografia o semantica o gramtica no se la verdad pero si lo lees como yo tres cuatro veces se entiende muy bien, hasta se siente muy entusiasmada la clase jajaja saludos
En la explicación de Objeto dice:
«En programación orientada a objetos cada Auto se conocerá como una instancia de la clase Auto.»
Y según lo que he aprendido, ¿no debería ser de la clase Automóvil?
Muy buen artículo que podría mejorarse ortográficamente.
Muy bueno… gracias por el aporte
Que buena información gracias por compartirla :p
Muy bueno gracias!!
Excelente gracias por el aporte.!
muy buena explicacion, solo me quedo dudas con la forma como definieron encapsulamiento.
pero gracias por todo
Gracias por la aportación, me pareció clara
Excelente contenido Saludos…
Muchas gracias por haber colaborado con este artículo!
Para un buen comienzo en desarrollo de software, esencial a tener en cuenta las diferentes características del articulo en mención!!
excelente aporte!!!!!
buenisimo tu aporte!!!
Reblogged this on Pablo Andrés Dorado Suárez.
gracias
Tan claro como el agua !!! Mil gracias !!!
Muchas gracias por el articulo.
Este articulo me ayuda mucho a entender como ser relaciona una cosa de otra, lo real con lo sistemático.
Ta bueno…… para recordar esos conceptos basicos.
Creo que este es un muy buen articulo basico, sin embargo pienso que en cuanto a los pilares de POO falto mucha mas claridad. Estoy total mente de acuerdo con los comentarios 10 y 12, ademas creo que el ejemplo dado por el comentario 10 esta mucho mas valido y claro que el que se da en el articulo.
No estoy seguro de que esa sea la función del polimorfismo… No es responsabilidad del carro comportarse como una grúa…
Creo que el polimorfismo es en realidad la capacidad del carro de poder recibir un mensaje que también aplica a la grúa, e interpretarlo como carro que es.
Buen concepto para aplicar .. Gracias
Hmmmmmm muy clara y consisa esta informacion.
Earia Eugenia exelente material muchas gracias
La verdad todo el tema es bueno, pero para los que hasta ahora estamos viendo el tema es muy poca la explicación y tratar de utilizar el idioma científico de lo más básico aumentando su complejidad progresivamente para que no nos perdamos en las lecturas o escribir su significado entre paréntesis.
Si, yo tambien estoy de acuerdo con 38. jvisoft, lo demas esta claro.
excelente!
Excelente explicación, a mi opinion muestra una perspectiva clara de aquello que nos desea expener.
Excelente información de manera clara y precisa con ejemplos sencillos.
Muchas gracias por esta documentacion 🙂
E
STE MATREIAL ESTA CALIDAD!!!! GRACIAS
Excelente tutorial, me ha gustado.
Muy bueno
lo que no tengo claro es que es instanciar un objeto. Me gustaría tenerlo bien definido.
Saúl, instanciar un objeto es crearlo. Al momento que pones ](si la clase es un Auto):
Auto miAuto; /* Aquí solo estás declarando el objeto (apartando en memoria), pero no lo instancias o creas. Se puede decir que su valor es null y no puedes hacer mucho con él */
Ahora si escribes:
Auto tuAuto = new Auto(); /* Aquí lo estás instanciando o creando */
Otro ejemplo parecido sería con un string o cadena de texto:
String cadena; // Solo lo declaras
String otraCadena = new String(«Hola mundo»); /* Lo estás instanciando. */
Espero haber aclarado la duda. Saludos.
aya!! es como inicializar una variable! Gracias muy bien explicado 🙂
Es importante aclarar desde un principio la diferencia que existe entre programación orientada a objetos y un lenguaje orientado a objetos.
La programación orientada a objetos es una “filosofía”, un modelo de programación, con su teoría y su metodología, que conviene conocer y estudiar antes de nada. Un lenguaje orientado a objetos es un lenguaje de programación que permite el diseño de
aplicaciones orientadas a objetos. Dicho esto, lo normal es que toda persona que vaya a desarrollar aplicaciones orientadas a objetos aprenda primero la “filosofía” (o adquiera la forma de pensar) y después el lenguaje, porque “filosofía” sólo hay una y lenguajes
muchos.
Muy buena la informacion, independientemente de que tenga suscosas confusas sirve muy bien para reafirmar lo que deberiamos de saber al menos sobre la POO..felicitaciones
Muy bueno, sólo que tengo una duda, en el segundo párrafo de la introducción, está bien empleada la palabra –metodología– o debería de ser –método–.
Por favor respondan sólo aquellas personas que hayan leído el libro de Corina Schmelkes “MANUAL PARA LA PRESENTACIÓN DE ANTEPROTECTOS E INFORMES DE INVESTIGACIÓN (Tesis), segunda edición, capítulo 9: método, página 52”
Es importante destacar que he leido muchas teorias sobre programació orientada a objeto y con esta explicacion es que he podido comprender los 4 pilares de la OOP. de verdad me siento muy bien porque a pesar que tengo cierto tiempo utilizando estas metodologias de programacion, ahora es que vengo a comprender la teoria.
Gracias Maria.
Balla todo me va bien pero aun no puedo aplicar las caracteristicas «hereditables» no entiendo muy bien como aplicarlas … muy buena informacion un 10 🙂
Gracias, grán material y es muy cierto que la bse de todo desarrollo implica conocer cada punto como uno e poder implemententarlo no de manera concreta pero si; aplicando los metodos que la P.O.O enseña.
Muy buen material en lo personal me quedo muy claro a que se refiere con cada definición. Gracias por el aporte
Excelente artículo, pero creo que la redacción, el exceso de términos y adornos lingüísticos, pueden llevar a la confusión, o mal interpretación del contenido, sobre todo, que esta información, es para algunos /Novatos/ un tanto difícil de digerir.
Es solo un comentario, aun así, sin duda es un excelente contenido.
Muy buen articulo saludos
Claro y concreto
buenisimo, que mas entendible…!
Gracias, es una introducción muy buena, gracias.
Rescatando la frase que dice María “meter todo en una capsula”, no deja de ser verdad, ya que si tomamos el ejemplos del motor dentro del auto, estamos encapsulando dentro del auto, todos los atributos que componen el motor y sus funcionalidades. Esto con un único fin, el cual es mostrar al usuario final solamente lo que él va a utilizar.
Ejemplo:
Al usuario le interesa la funcionalidad de «prenderMotor»; en cambio, «controlarAceiteMotor» no le interesa.
Espero se entienda.
Saludos
buen aporte muchas gracias
Gracias 🙂
Muy buena explicación. Gracias
Reblogueó esto en El blog de Chiti.
Buen articulo
Gracias! muy buen articulo, solo una pregunta, de las definiciones dadas podemos concluir que no puede existir polimorfismo sin herencia ?
Hola muy bueno el post, es creo lo que se llama programacion en c++
Buena introduccion… gran material… Muchas gracuas
Buena redacción, la explicación es bien detallada.
Buena Introduccion
¿A qué se refiere el «Estado de un objeto»?
Buen Material, en un pequeño resumen diría que:
Clase: Es el molde de que me permitirá crear objetos en adelante, posee atributos y métodos.
Objeto: Es la instanciaición de una clase.
Polimorfismo o métodos Sobrecargados: Es la propiedad que tiene un método, quien a pesar de llamarse igual realiza distintas funciones dependiendo de los parámetros recibidos.
Abstracción: Es programar creando en un clase solo los atributos necesarios de la clase, no sobrecargar de atributos innecesarios
Encapsulamiento: Es desarrollar clases, dejando solo disponibles como públicos los métodos necesarios, es decir, no todo debe ser publico.
Herencia: Es la relación que existe entre 2 clases, donde una clase A hereda todos los métodos y atributos de una Clase B y ademas de esto puede contar con sus propios atributos y métodos. Ej Persona –> Empleado.
muy interesante este curso virtual
Una información muy detallada y precisa.
Saludos.
Buena introducción