Qué es programación orientada a objetos

2/17
Recursos

Aportes 43

Preguntas 8

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesión.

Principales paradigmas de programacion

Programación imperativa:

Los primeros lenguajes de programación y, por extensión, también los primeros programas informáticos, se basaban completamente en este enfoque, que prevé una secuencia regularizada de órdenes o instrucciones determinadas. Este paradigma de programación es la base, por ejemplo, de los veteranos lenguajes Pascal y C, así como de todos los lenguajes ensambladores, entre otros. En la programación imperativa, el centro de atención radica, entre otras cosas, en trabajar lo más cerca posible del sistema. Como consecuencia, el código de programación resultante es fácil de comprender y, a la vez, muy abarcable.

Programacion estructurada:

La principal modificación del principio básico radica en que, en lugar de instrucciones de salto absolutas (instrucciones que provocan que el procesamiento no continúe con la siguiente instrucción, sino en otro lugar) este paradigma de programación de software prevé el uso de bucles y estructuras de control.

Programación procedimental:

El paradigma de programación procedimental amplía el enfoque imperativo con la posibilidad de desglosar algoritmos en porciones manejables. Estos se denominan como procedimientos, dependiendo del lenguaje de programación, o también como subprogramas, rutinas o funciones. El sentido y el propósito de esta distribución es hacer que el código de programa sea más claro y evitar las repeticiones innecesarias de código.

Programación modular:

El código fuente se divide específicamente en bloques parciales lógicos independientes los unos de los otros para proporcionar más transparencia y facilitar el proceso de debugging (resolución de errores). Los bloques parciales individuales, denominados módulos, se pueden probar por separado antes de vincularlos posteriormente a una aplicación conjunta

Programación declarativa:

Radica en la descripción del resultado final que se busca. Por lo tanto, en primera línea se encuentra el “qué” del resultado y no el “cómo” de los pasos que llevan a la solución, como es el caso en la programación imperativa. Esto provoca que el código de la programación declarativa sea más difícil de comprender debido al alto grado de abstracción, aunque resulta muy corto y preciso.

Programación funcional:

Un programa de programación funcional consta de llamadas de función concatenadas en las que cada parte del programa se interpreta como una función. En este sentido, las funciones dentro de la programación funcional pueden adoptar distintas “estructuras”. Por ejemplo, se pueden vincular entre sí como datos o se pueden utilizar en forma de parámetros. Asimismo, se pueden utilizar como resultados de función. En contraposición, el paradigma se ocupa de que no haya asignaciones independientes de valores.

Programación lógica:

El paradigma de software lógico, denominado también como programación predicativa, se basa en la lógica matemática. En lugar de una sucesión de instrucciones, un software programado según este principio contiene un conjuntode principios que se pueden entender como una recopilación de hechos y suposiciones. Todas las solicitudes al programa se procesan de forma que el intérprete recurre a estos principios y les aplica reglas definidas previamente para alcanzar el resultado deseado.

FUENTE:

Los paradigmas son distintas maneras de programar, los más comunes son:

  • Estructurado
  • Orientado a objetos
  • Funcional

Un paradigma NO es mejor que otro, depende de la situación y el contexto.

Cada lenguaje puede trabajar con 1 o varios paradigmas.

Ventajas de POO ✅:

  • Orden
  • Todo está conectado
  • Reutilizar código -> Los moldes son las clases, que usaremos para instanciar objetos

Los objetos tienen métodos (funciones) y atributos (características).

Pequeño ejemplo 😃

Supongamos que somos los creadores de minecraft y sabemos que todo se compone de cubitos. Entonces de esta manera sabemos que todos los cubos tienen la misma apariencia en cuanto a forma y son cuadrados, así que vamos a crear un molde general o clase llamada “Cubo”

.
Pero por supuesto si todo fueran cubos y ya seria totalmente aburrido así que vamos a ponerle propiedades o atributos a cada cubo. Por ejemplo tendremos:

  • CuboPasto
  • CuboNieve
  • CuboTierra
  • CuboNube
  • CuboTNT

Y cuanto mas tipos de cubos tengamos mejor ya que el juego tendrá una mejor apariencia. Pero que aburrido seria solo poder navegar entre cubos sin poder hacer ninguna interacción así que vamos a crear métodos o acciones para diferentes tipos de cubos. Por ejemplo tendremos:

  • CuboTNT – Explotar() - Este método puede ser que si lo tocamos haga una interacción que parezca que haya explotado.
  • CuboAgua – Sonar() - Este método puede ser que al estar sobre el agua exista algún sonido que lo represente como en la vida normal.

.
Y de esta simple manera podemos entender en ejemplos prácticos y sencillos como funciona al paradigma de POO.
.
¡Espero te sirva! 😃

Qué es programación orientada a objetos

La Programación Orientada a Objetos (POO, en español; OOP, según sus siglas en inglés) es un paradigma de programación que viene a innovar la forma de obtener resultados. Los objetos se utilizan como metáfora para emular las entidades reales del negocio a modelar.

Origen

Los conceptos de la POO tienen origen en Simula 67, un lenguaje diseñado para hacer simulaciones, creado por Ole-Johan Dahl y Kristen Nygaard, del Centro de Cómputo Noruego en Oslo. En este centro se trabajaba en simulaciones de naves, que fueron confundidas por la explosión combinatoria de cómo las diversas cualidades de diferentes naves podían afectar unas a las otras. La idea surgió al agrupar los diversos tipos de naves en diversas clases de objetos, siendo responsable cada clase de objetos de definir sus “propios” datos y comportamientos. Fueron refinados más tarde en Smalltalk, desarrollado en Simula en Xerox PARC (cuya primera versión fue escrita sobre Basic) pero diseñado para ser un sistema completamente dinámico en el cual los objetos se podrían crear y modificar “sobre la marcha” (en tiempo de ejecución) en lugar de tener un sistema basado en programas estáticos.

POO en JavaScript

JavaScript (abreviado comúnmente JS) es un lenguaje de programación interpretado, dialecto del estándar ECMAScript. Se define como orientado a objetos, basado en prototipos, imperativo, débilmente tipado y dinámico.

Fuentes

https://es.wikipedia.org/wiki/Programación_orientada_a_objetos
https://es.wikipedia.org/wiki/JavaScript

166.66 HORAS PARA LAS 10,000 GALLETIKAS

6.944 DIAS

1 SEMANA. (SIN MOLDE)

de nada 😗

Paradigmas

  • Estructurado
  • Orientado a Objetos ✅
  • Funcional

Ventajas de POO:

  1. Encapsulamientos de datos: Podemos agrupar datos que tienen algo en común, o que pueden ser agrupados.

  2. Reutilizacion de codigo: Podemos reusar código repetitivo encapsulando, métodos y atributos en un objeto.

Notas de la Clase

📼 Qué es programación orientada a objetos

Ideas/conceptos claves

Los prototipos son un mecanismo mediante el cual los objetos en JavaScript
 heredan características entre sí

Apuntes

Paradigmas

  • Cuando programamos un algoritmo existen diferentes formas de llegar a un mismo resultado
  • Los paradigmas de programación formas, caminos, indicaciones o lineamientos que podemos seguir para programar nuestras aplicaciones
  • Existen muchos paradigmas entre los más llamativos son:
    1. Estructurado
    2. Orientado a objetos
    3. Funcional
  • Cada paradigma se creó para solucionar algunos problemas o dificultades que nos generaban los paradigmas que existían en el pasado
  • Un paradigma recientemente creado no significa que es mejor que otro, depende del contexto de uso
  • Existen lenguajes que te permiten utilizar más de un paradigma como otros que son exclusivos para un paradigma de programación

Programación Orientada a Objetos

🔠 Orden

  • Uno de los primeros problemas a resolver fue el orden
  • Esto nos ayuda cuando todos los elementos de nuestra aplicación están conectados entre sí
  • Los objetos nos permiten definir:
    • Atributos son valores que serán propios de unos objetos
    • Métodos son comportamientos para nuestros objetos

🍪 Reutilizar

  • Imagínate crear varias galletas las cuales deban de tener un mismo tamaño y grosor, este proceso será repetitivo.
  • Al tener un molde será más sencillo crear las mismas de una misma forma
    • Crear moldes toma un poco más de tiempo resulta un poco de más tiempo, pero a largo plazo para crear uno nos ahorra mucho más tiempo
  • Las clases serán nuestros moldes las cuales podremos reutilizar declarando atributos y métodos
📌 **RESUMEN:** La programación orientada a objetos es un paradigma. Un paradigma es un conjunto de lineamientos o guías que nos ayuda a resolver un problema específico.

Por acá les dejo un aporte de programación orientada a objetos

https://developer.mozilla.org/es/docs/Learn/JavaScript/Objects/Object-oriented_JS

class CookieMaker {
    constructor (num, container) {
        this.num = num
        this.container = container
    }
    getTemplate(id){
        let template = `<div id="coockie-${id}" class="cookie"></div>`
        return template
    }
    getCoockies(num, cont) {
        num = this.num
        cont = this.container
        for(let i = 0; i < num; i++) {
            cont.innerHtml += this.getTemplate(i)
        }
    }
}
let box = document.getElementById('container')
let cookieOrder1 = new CookieMaker().getCoockies(10000, box)

Historia

La Programación Orientación a Objetos (P.O.O.) surge en Noruega en 1967 con un lenguaje llamado Simula 67, desarrollado por Krinsten Nygaard y Ole-Johan Dahl, en el centro de cálculo noruego.

Simula 67 introdujo por primera vez los conceptos de clases, corrutinas y subclases (conceptos muy similares a los lenguajes Orientados a Objetos de hoy en día).
El nacimiento de la Programación Orientación a Objetos en Europa pasó inadvertido para gran parte de los programadores. Hoy tenemos la Orientación a Objetos como un niño de 33 años al que todos quieren bautizar.

Uno de los problemas de inicio de los años setentas era que pocos sistemas lograban terminarse, pocos se terminaban con los requisitos iniciales y no todos los que se terminaban cumpliendo con los requerimientos se usaban según lo planificado. El problema consistía en cómo adaptar el software a nuevos requerimientos imposibles de haber sido planificados inicialmente.

Este alto grado de planificación y previsión es contrario a la propia realidad. El hombre aprende y crea a través de la experimentación, no de la planeación. La Orientación a Objetos brinda estos métodos de experimentación, no exige la planificación de un proyecto por completo antes de escribir la primera línea de código.

En los 70’s científicos del centro de investigación en Palo Alto Xerox (Xerox park) inventaron el lenguaje Small talk que dio respuesta al problema anterior (investigar no planificar).

Small talk fue el primer lenguaje Orientado a Objetos puro de los lenguajes Orientados a Objetos, es decir, únicamente utiliza clases y objetos (Java usa tipos de datos primitivos, o bien los Wrappers que son clases que encapsulan tipos de datos primitivos).

Quien tuvo la idea fue D. Parnas cuando propuso la disciplina de ocultar la información. Su idea era encapsular cada una de las variables globales de la aplicación en un solo módulo junto con sus operaciones asociadas, sólo mediante las cuales se podía tener acceso a esas variables.

El resto de los módulos (objetos) podían acceder a las variables sólo de forma indirecta mediante las operaciones diseñadas para tal efecto.

En los años 80’s Bjarne Stroustrup de AT&T Labs., amplió el lenguaje C para crear C++ que soporta la programación Orientada a Objetos.

En esta misma década se desarrollaron otros lenguajes Orientados a Objetos como Objective C, Common Lisp Object System (CIOS), object Pascal, Ada y otros.
Posteriores mejoras en herramientas y lanzamientos comerciales de C++ por distintos fabricantes, justificaron la mayor atención hacia la programación Orientada a Objetos en la comunidad de desarrollo de software. El desarrollo técnico del hardware y su disminución del costo fue el detonante final. Con más computadoras al alcance de más personas más programadores, más problemas y más algoritmos surgieron.

En el inicio de los 90’s se consolida la Orientación a Objetos como una de las mejores maneras para resolver problemas. Aumenta la necesidad de generar prototipos más rápidamente (concepto RAD Rapid Aplication Developments). Sin esperar a que los requerimientos iniciales estén totalmente precisos.

En 1996 surge un desarrollo llamado JAVA (extensión de C++). Su filosofía es aprovechar el software existente. Facilitar la adaptación del mismo a otros usos diferentes a los originales sin necesidad de modificar el código ya existente.

En 1997-98 se desarrollan herramientas ‘CASE’ orientadas a objetos (como el diseño asistido por computadora).

Del 98 a la fecha se desarrolla la arquitectura de objetos distribuidos RMI, Corba, COM, DCOM.

Actualmente la orientación a objetos parece ser el mejor paradigma, no obstante, no es una solución a todos los problemas. Trata de eliminar la crisis del software. Entre los creadores de metodologías orientadas a objetos se encuentran: G. Booch, Rambaught, Ivar Jacobson y Peter Cheng.

Un paradigma es una teoría que suministra la base y modelo para resolver problemas. POO es un paradigma que brinda orden al código.

PROGRAMACIÓN ORIENTADA A OBJETOS
·
El orden es una de las cosas que más ayuda al usar el paradigma de Programación Orientada a Objetos (OOP).
·
Los elementos, necesitan tener un orden para poder vivir dentro de un objeto. Porque así mismo, cada elemento puede ser un objeto. Estos elementos pueden ser ATRIBUTOS Y MÉTODOS. INFORMACIÓN Y FUNCIONES DENTRO DE LOS OBJETOS. Estos atributos guardan información dentro de un objeto y los métodos son funciones que pueden operar la información de los atributos. Gracias a éste orden, nos ayuda a darle mantenimiento al código. Porque todo estará separado por objetos. Cada objeto tendrá los métodos y atributos que le corresponde. La información tendrá relación entre los objetos, gracias a sus atributos, pero principalmente por ser objetos que se pueden relacionar.
·
La reutilización de código es otra cosa que optimiza mucho usar el paradigma de Programación Orientada a Objetos (OOP).
·
EL USO DE CLASES es lo que nos permite reusar cosas. Son bloques de código en donde puedo crear una base o un molde de objetos. Ahí, en estos moldes podemos crear los métodos y atributos base por defecto para nuestros objetos.
Así a partir de una clase, podemos instanciar y personalizar cada objeto.
Nos permiten definir de qué tipos de datos, o de qué tipo de información, está hecho este objeto. Si es texto, si es un número y booleano, para crear una clase Estudiante para su nombre, edad y sexo. Entonces, dos objetos que se llaman Natalia y Juanita, se instancian de la clase Estudiante para crear cada uno por separado.

Les dejo el enlace del curso de OOP.

Amo las metáforas que emplea Juan para explicar : )

Según yo serían sin el molde sería 34 días (sin dormir, trabajando 24/7) pero con el molde estaríamos trabajando cerca de 4 días

Muy buena explicacion!

PARADIGMAS
Los paradigmas de programación son los principios fundamentales de la programación de software. Lo más fácil es plantearlos como estilos de programación fundamentalmente diferenciados que, en consecuencia, generan códigos software que están estructurados de forma distinta.

  • Estructurado

  • Orientado a objetos:

    1. Uno de los problemas que vino a resolver es el ORDEN.

    2. Cada elemento de nuestro proyecto es un objeto y todo lo que esté relacionado con nuestro objeto debe vivir dentro de él.

    3. Nos ayuda a reutilizar código.

  • Funcional.

MÉTODOS Y ATRIBUTOS:
Cada objeto tiene métodos (funciones) y atributos para guardar la información del mismo.
CLASES
Las clases son bloques de código donde podemos definir métodos y atributos base para nuestros objetos. A partir de ésta se “instancian” los objetos.
Nos permiten definir qué tipo de información vamos a guardar en cada atributo.

Aunque Javascripts es un lenguaje orientado a objetos no está basado en clases sino en prototipos.

La POO es un paradigma de programación cuya finalidad es que el código sea ordenado, reutilizable y funcional; para ello ocupamos las clases que son la abstracción de los objetos (como explico juan las clases son el molde), en donde cada objeto esta compuesto por atributos (características que definen al objeto) y por métodos los cuales son funciones que nos dicen que sabe hacer ese objeto, esto nos permite optimizar tiempo al momento de programar, además de que cuando tengamos que modificar, o agregar líneas al código nos permite hacerlo de una forma mas “automatizada”

Un paradigma bastante interesante es la programación reactiva. La descubrí con Angular y RXjs. muy bueno

Les dejo el link por si quieren echar un vistazo Rxjs

Está bien cool tomar esta clase a x2

ventajas de la POO

  • Orden:
    La relación, dependencia que tienen los elementos entre si
  • Todo esta conectado
    Todos los elementos de nuestra aplicación están conectados
  • reutilizar código
    Las clases son los moldes para crear objetos con atributos y métodos en común

Tomaría poco más de tres días 🙂

Ejercicio de Galletas


Se tomará un aproximado de 83.333 horas al implementar el molde de Galletas.

10 galletas → en 5 minutos.
10,000?.

10000 / 10, se hace para saber cuantas veces tengo que usar el molde para sacar las 10000 galletas.

1000 veces tendremos que usar el molde para hacer las galletas, solo nos falta saber cuanto se demora, si en 5 minutos se sacan las 10, entonces 1000 * 5 minutos, es la operacion para saber cuanto nos demoramos en sacar las 10000 con el molde.

POO

Es un paradigma o alineamientos para programar. Lo que busca es abstraer la logica de las entidades que se van a crear y utilizar en clases o moldes que pueden replicar tal comportamiento con sus posibles variaciones.

Antes de saber que es la programación orientada a objetos hay que saber que es un paradigma.

Un paradigma de programación es una manera o estilo de programación de software. Existen diferentes formas de diseñar un lenguaje de programación y varios modos de trabajar para obtener los resultados que necesitan los programadores. Se trata de un conjunto de métodos sistemáticos aplicables en todos los niveles del diseño de programas para resolver problemas computacionales.

En este modelo de paradigma se construyen modelos de objetos que representan elementos (objetos) del problema a resolver, que tienen atributos y métodos. Permite separar los diferentes componentes de un programa, simplificando así su creación, depuración y posteriores mejoras. La programación orientada a objetos disminuye los errores y promociona la reutilización del código. Es una manera especial de programar, que se acerca de alguna manera a cómo expresaríamos las cosas en la vida real.

Podemos definir un objeto como una estructura abstracta que, de manera más fiable, describe un posible objeto del mundo real y su relación con el resto del mundo que lo rodea a través de interfaces.

Tenemos tres paradigmas de progrmacion:

1. Estructurado
2. Orientado a Objetos
3. Funcional

POO es un paradigma ampliamente utilizado y espero poder profundizar aun mas en este curso juento a JS

Muy bueno. Si, como la gente esta inconforme con una forma de resolver algo es que nacen nuevas formas de solucionar problemas con sus pros y sus contras.

Las clases son bloques de código donde podemos definir métodos y atributos bases para nuestros objetos.

POO: paradigma de programación que ordena la información en atributos y funciones. con el fin de reutilizar código creamos clases con las que definimos atributos y métodos, son como una plantilla para crear objetos: usuarios, productos, membresía, etc., a este proceso se le llama instanciar objetos por lo mismo a los objetos se les suele llamar instancias.

en promedio con el molde que hace 10 galletas serian 3.4 días profe

Este profesor es un monstruo, una bestilidad. Me inspira la emoción por aprender que poquísimos profesores logran incluso en la universidad. Que grandes sos Juan.

Encontré esta imagen para que entiendan un poco mas a lo que se refiere instancia.

Una Gran clase, explica de manera sencilla

📌 En la programación, existen múltiples paradigmas para resolver los algoritmos, es decir, lineamientos sobre los cuales podemos basarnos para solucionar un problema. Por ejemplo:

  • Estructurado
  • Orientado a Objetos
  • Funcional

Nota. Ningún paradigma es mejor que otro, son distintos enfoques, su uso depende de el contexto y de los requerimientos.

📌 Los objetos son usados para almacenar colecciones de atributos(datos) y métodos(funciones).

📌 La Programación Orientada a Objetos nos permiten tener orden, ligar información y reutilizar el código mediante las **clases ** que son un molde(una base de atributos y métodos) del cual podremos instanciar nuevos objetos con la misma base y una personalización.

Nota. En JavaScript, la POO se basa en prototipos, no en clases.

A ver, en resumen.

Paradigma

Es esa teoría que suministra la base y el modelo para resolver problemas. Hay que tener en cuenta que ningún paradigma es necesariamente mejor que otro. Solo hay que saber cual aplicar para la lógica de tu negocio. Ahora bueno…

¿Qué es la POO?

Resumiendo es una forma de abordar tus problemas abstrayendo los elementos en forma de objetos.

Algunas de sus ventajas?

Todo nuevo paradigma surge para resolver nuevas necesidades que los viejos paradigmas no nos permiten de manera sencilla (siendo justos, es para hacernos la vida mas sencilla).
Dentro de sus ventajas tenemos:

  • El orden: Al separar nuestros elementos en Objetos será mas fácil mantener nuestro código y hacerlo escalable.
  • Reutilización del código: DRY (Don’t Repeat Yourself), Nuestras piezas de código no deberían de repetirse ya que esto nos dificultará la evolución futura (y su mantenimiento).

¿Qué Elementos podemos encontrar en la POO?

Hasta ahora hemos escuchado de estos 4 ( y los seguirás escuchando muy a menudo):

  • Clases: Son bloques de código que nos permiten definir métodos y atributos (base) para nuestros objetos.
  • Atributos: Son las características de nuestros objetos (Altura, peso, Si es estudiante (o no)
  • Métodos: Son funciones que guardamos en nuestros objetos para actualizar la información de forma segura.

Así vamos, sigamos con la siguiente clase 😄

Ah, para hacer las 10000 Galletas con nuestro nuevo molde, solamente nos tomaría menos de una semana (sin ningún tipo de descanso 😐) Para ser exactos 83.33 horas 😄

Gran clase!

buenos conceptos, pero algo acelerado =/

Me gustaría decir: ve al grano por favor, no enredes algo que ya esta enredado. Pero veo que hay comentarios o aportes que hacen precisamente eso, así que mejor los leí y entendí mejor el tema. Buena comunidad 😄 ❤️

Me pone nervioso ver como hace tantos gestos, no deja que me concentre bien!