INFORMATICOS: Para que shishi sirve la PROGRAMACION ORIENTADA A OBJETOS???

La POO es una forma de facilitar la abstracción de conceptos y las interracciones entre los mismos. Hay que entenderla así y usarla consecuentemente, no ciegamente con cualquier sofware.
 
Y no es lo mismo hacer una matriz multidimensional?

Se puede hacer (aunque es una guarrada) , la PPO solo pretende acercarse a la "realidad" del ser humano , se definen unos objetos con sus atributos y que puede hacer con ellos , despues se relacionan entre ellos para obtener el resultado final .Se trata más de un tema de diseño que de algoritmos.

Lo "contrario" a POO se denomina programación imperativa, no lineal.

Disparate

Hay algo más allá de la POO?

POO + programación genérica
 
Pues nada. Haz un código POO con C. Como dije en mi mensaje, poder se puede. Tú mismo.

Hombre, no, el resto de tu mensaje está bien. Pero ese ejemplo en concreto... Pareces dar a entender que meter el "add" dentro de la clase va a evitar tener que gestionar memoria a bajo nivel, y eso no es así.
 
Y para esto en C puedes meter punteros a funciones en la misma estructura coche.

Y para esto en C no puedes crear una estructura "fiat" que herede de coche ni aplicar poliformismo en sus subclases

Y para esto en C no puedes crear una estructura coche abstracta

Y para esto en C la estructura coche al tener todos los atributos públicos te pueden entrar un valor inverosímil .

¿Sigo?
 
Y para esto en C no puedes crear una estructura "fiat" que herede de coche ni aplicar poliformismo en sus subclases
No hay un concepto de herencia en C, pero win32 tradicionalmente se ha programado en C orientado a objetos (no C++). Y claro que se puede simular la herencia, y que se pueden implementar tipos polimórficos. Precisamente la v_table de C++ es una table de punteros como se hacía antes. No digo que sea una buena idea, pero que se puede, y que se ha hecho habitualmente durante años...

Y para esto en C no puedes crear una estructura coche abstracta
En simula tampoco, ¿y?

Y para esto en C la estructura coche al tener todos los atributos públicos te pueden entrar un valor inverosímil .
Esto no es una discusión de C vs C++. Se está hablando de POO en general. Yo solo pongo contraejemplos cuando alguien dice "la POO es tal". Suelen ir en C porque es un lenguaje muy potente y que conozco razonablemente, pero probablemente se pueda hacer lo mismo en Pascal. Pero bueno, en esto le doy la razón. Una clase con RAII bien implementada no tiene este problema y en C creo que es imposible resolverlo de forma que el programador usuario no tenga que hacer nada.


Se puede hacer (aunque es una guarrada) , la PPO solo pretende acercarse a la "realidad" del ser humano , se definen unos objetos con sus atributos y que puede hacer con ellos , despues se relacionan entre ellos para obtener el resultado final .Se trata más de un tema de diseño que de algoritmos.
Precisamente en javascript los objetos realmente son matrices asociativas roto2

Hombre, yo no diría que es "lo contrario", pero la POO se suele contraponer a lo que se dio en llamar programación estructurada o imperativa. La respuesta que citaba, aunque mejorable, no era para nada un disparate.

POO + programación genérica
¿Ahora la programación genérica es un paradigma nuevo? tragatochostragatochostragatochos
Con esto me retiro del hilo.
 

Más o menos de acuerdo en todo, salvo en lo de fanboy de C. Es un lenguaje que apenas conozco salvo por lo que he aprendido pegándome durante años y años con C++ roto2
 
No hay un concepto de herencia en C, pero win32 tradicionalmente se ha programado en C orientado a objetos (no C++). Y claro que se puede simular la herencia, y que se pueden implementar tipos polimórficos.

No es un estándar del lenguaje , pero vamos que el compilador ha añadido ciertas funcionalidades de objetos al lenguaje, aunque sea solo "azucarillo"

Esto no es una discusión de C vs C++. Se está hablando de POO en general.

Los conceptos que me refiero están en la mayoría de lenguajes POO , y sí , C es un "gran" lenguaje
Precisamente en javascript los objetos realmente son matrices asociativas roto2

El disparate me refería mezclar en una matriz enumeraciones,enteros,cadenas de carácteres ... y si lo hace javascript pues disparate igual

Hombre, yo no diría que es "lo contrario", pero la POO se suele contraponer a lo que se dio en llamar programación estructurada o imperativa. La respuesta que citaba, aunque mejorable, no era para nada un disparate.

Respondía otro forero.. pero para que quede claro:

1*VahJ7tMFoZXCUyAPkVyIgg.png

¿Ahora la programación genérica es un paradigma nuevo? tragatochostragatochostragatochos
Con esto me retiro del hilo.

¿Yo he dicho que sea nuevo? solo digo que es una paso más
 
Vaya un ejemplo tramposo.

A mí me da lo mismo poner list.add(algo) que addToList(list, algo).

Todo lo demás habrá que hacerlo igual o el lenguaje lo hará por ti, que sea orientado a objetos o no es inverosímil.

Hay diferencias importantes.

Suponga que una clase que es Vehículo. De esa clase Vehículo se escriben como clases derivadas las clases Coche, Moto, Bici y Camion

Una función de un objeto podría estar diseñada para tratar objetos Vehículo, por ejemplo actualiza(Vehículo)

El parámetro de esa función sería un objeto de la clase Vehículo, lo que hace que admita también motos, bicis o camiones, ya que esos objetos también son vehículos (sus clases derivan de la clase Vehículo) y puede hacer cosas como actualiza(Moto)

Las clases especiales de vehículos podrían ser muchas, y hacer tipos especiales de motos que a su vez derivan de la clase Moto. Pongamos que, si ha tras*currido mucho tiempo y las cosas de han complicado, el sistema tiene 47 tipos de vehículos entre clases derivadas de vehículo o clases derivadas de clases de vehículo, por ejemplo MotoGranClindrada que es un tipo de Moto

Pongamos que ahora necesita establecer una nueva funcionalidad a los vehículos, por ejemplo revisarMotor. Una nueva función revisarMotor que admita un Vehículo, admitirá una MotoGranCilindrada revisarMotor(MotoGranCilindrada)

Si escribe una nueva funcionalidad en la clase Vehículo, por ejemplo la nueva función Vehículo.revisarMotor() inmediatamente podrá usar la función Camion.revisarMotor(). Al añadir una nueva función a la clase general Vehículo, está añadiendo esa nueva función a las clases hijas, como Moto

En un lenguaje como C, los objetos 'inspirados' en un objeto más general, se obtienen mediante un copy-paste y retoques y añadidos en el objeto derivado para hacerlo más especializado. Sin embargo, el código hijo queda completamente desconectado del código padre.

Si se quiere añadir una nueva funcionalidad o modificar una que ya existía, hay que revisar a mano quizás cientos de páginas de código que, en muchas ocasiones ni siquiera se sabe dónde están y es fácil cometer bugs en la revisión o dejar código obsoleto sin actualizar.
 
Si se quiere añadir una nueva funcionalidad o modificar una que ya existía, hay que revisar a mano quizás cientos de páginas de código que, en muchas ocasiones ni siquiera se sabe dónde están y es fácil cometer bugs en la revisión o dejar código obsoleto sin actualizar.

¿Y con la orientación a objetos eso no ocurre?
 
Es una manola mental que tiene que ver con la "teoría de categorías".

Apenas hay nada que se haga con POO que no se pueda hacer con programación estructurada.
Como concepto de estructuración está muy bien.
Como "lenguajes con facilidades y caracterñisticas orientadas a objetos" es un truño gigantesco.

Al final, lo que hay por debajo, sigue siendo una máquina secuencial que ejecuta isntrucciones osbre memoria.
Todo eso parece que los informáticos lo olvidan (si es qeu alguna vez llegaron a entenderlo).
 
Buenas.

Soy programador aficionado (alguno recordara el hilo de los TOROIDES) y he programado cosas en varios lenguajes, mayormente Basic, Ensamblador (z80 y 086), Javascript y Php....vamos a ver, llevo años intentando entender para que shishi sirve la POO, es decir, a quien huevones se le ocurrio semejante cosa de paradigma antiintuitivo? a ver, un programa son variables, lineas de codigo, direccionamientos a la memoria, etc....a que viene todo eso de las clases, instancias, etc? en que mejora la programacion lineal clasica? ya lo digo yo, en nada, incluso lo veo antiintuitivo, se pierde totalmente la nocion de lo que es la programacion....

Repito...que ventajas tienen estos conceptos sobre la programacion clasica? osea, si puedo hace run programa o videojuego con los conceptos tradicionales de la programacion para que shishi tengo que usar esta fruta cosa?

Ponerme un ejemplo sencillito.

Que opinais?
La programación estructurada es muy guay para hacerte un script rapidito y sin complicaciones.
Cuando hay que hacer algo más "grande" que va a implicar mantenimiento entonces hay que reutilizar código, hay que tener ese código "compartimetado"(de ahí las clases).
También te diré que mucha gente usa POO y la usa mal, creando clases cajón de sastre o no teniendo ni idea de porque se declaran partes privadas de una o incluso para que usar una clase privada.
El copy-paste, la mala planificaciónde proyectos que provocan desidia o la falta de formación/vocación hacen eso.

¿Por qué dices que es antituiva?
 
Volver