Autor Tema: Cual es la diferencia entre Función y Objeto?  (Leído 20484 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado JBQ

  • PIC16
  • ***
  • Mensajes: 118
Cual es la diferencia entre Función y Objeto?
« en: 10 de Febrero de 2012, 17:25:37 »
Estaba leyendo sobre la OOP, y en ella se recalcaba que no se debe de confundir las funciones con los objetos. Pues esto no me quedo muy en claro, asi que le pregunté a un programador de softwares y me confundió aún más, ya que yo trataba de llevarlo a situaciones referente a los microcontroladores, y el solo me daba ejemplos abstractos, ya que su manejo de hardware era mínimo (se limitaba a los puertos de la PC).  Por eso ubique esta cuestión en esta sección del foro, a ver si me ayudan a esclarecer esta duda... saludos.

Desconectado PalitroqueZ

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5490
    • Electrónica Didacta
Re: Cual es la diferencia entre Función y Objeto?
« Respuesta #1 en: 11 de Febrero de 2012, 01:54:31 »
un objeto es una entidad que posee métodos (funciones) y propiedades. una función es una rutina que recibe argumentos y devuelve un solo resultado

relacionar la OOP con microntroladores depende del compilador existente para ello. Hasta la fecha conozco de un software llamado OOPic de Savage Innovations pero creo que ellos son historia  :(
La propiedad privada es la mayor garantía de libertad.
Friedrich August von Hayek

Desconectado JBQ

  • PIC16
  • ***
  • Mensajes: 118
Re: Cual es la diferencia entre Función y Objeto?
« Respuesta #2 en: 11 de Febrero de 2012, 02:32:04 »
OK, pongamos un ejemplo: si yo escribo en el LCD, estoy llamando a una función o estoy usando un objeto??? por que estoy enviando argumentos pero no recibiendo resultados, por otro lado, el LCD posee funciones y propiedades; como podría aqui determinar si estoy usando una función o un objeto?.

PDTA. gracias por responder.

Desconectado sander

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 627
Re: Cual es la diferencia entre Función y Objeto?
« Respuesta #3 en: 11 de Febrero de 2012, 14:12:55 »
Yo creo que el LCD podria ser una clase, ya que existen LCDs con diferentes caracteristicas, por ejemplo la cantidad de caracteres que se pueden mostrar, existirian LCDs (objetos) de 8x2 lineas, 16x2, 20x4, etc, y los metodos comunes a esta clase (funciones) podrian ser escribir un byte, inicializarLCD, etc.

Entonces si creas la clase LCD

Código: C++
  1. class LCD
  2. {
  3.   int  nFilas;
  4.   int  nColumnas;
  5.  
  6.  
  7.   void inicializarLCD();
  8.   void EscribirCarac(char Dato);
  9.  
  10. }
  11.  
  12. //Luego podrias crear un objeto LCD16x2 y especificar sus atributos
  13.  
  14. LCD  LCD16x2
  15.  
  16. LCD16x2.nFilas =2;
  17. LCD16x2.nColumnas =16;
  18.  
  19. //Luego usar sus metodos(funciones)
  20.  
  21. LCD16x2.InicializarLCD();
  22. LCD16x2.EscribirCarac('H');

Estoy bastante seguro de que esa seria una forma en la que podrias manejar un LCD usando clases, pero hace mucho que no programo con clases asi que talvez existan algun error.

sobre tu pregunta inicial....., creo que la funcion es equivalente al metodo y un objeto es un elemento que pertenece a una clase.

Saludos
La electrónica es el arte de manipular señales eléctricas que transportan información
Jan Davidse

Visita mi blog
Visita mi canal de youtube

Desconectado PalitroqueZ

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5490
    • Electrónica Didacta
Re: Cual es la diferencia entre Función y Objeto?
« Respuesta #4 en: 11 de Febrero de 2012, 15:30:40 »
OK, pongamos un ejemplo: si yo escribo en el LCD, estoy llamando a una función o estoy usando un objeto??? por que estoy enviando argumentos pero no recibiendo resultados, por otro lado, el LCD posee funciones y propiedades; como podría aqui determinar si estoy usando una función o un objeto?.

PDTA. gracias por responder.

eso, como mencioné antes, depende del compilador. Si usas por ejemplo el C de ccs, estás usando C y por tanto todo el código se guiará por llamados de funciones. (programación estructurada).

y creo que los demás compiladores (c18, picbasic, mikroc, hitech) tampoco usan el concepto de clase u objeto para programar microcontroladores.
La propiedad privada es la mayor garantía de libertad.
Friedrich August von Hayek

Desconectado MerLiNz

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2463
Re: Cual es la diferencia entre Función y Objeto?
« Respuesta #5 en: 11 de Febrero de 2012, 17:34:19 »
Te estas complicando mucho, los objetos son de C++ y para un pic se usa C a secas el cual no se puede considerar nada como objeto a no ser que te montes tu propia estructura cosa que consumiria mucha memoria y programa.

Cuando escribes en un lcd con una funcion hecha para ello pues estas usando una funcion.

Desconectado JBQ

  • PIC16
  • ***
  • Mensajes: 118
Re: Cual es la diferencia entre Función y Objeto?
« Respuesta #6 en: 11 de Febrero de 2012, 20:13:54 »
eso, como mencioné antes, depende del compilador. Si usas por ejemplo el C de ccs, estás usando C y por tanto todo el código se guiará por llamados de funciones. (programación estructurada).

y creo que los demás compiladores (c18, picbasic, mikroc, hitech) tampoco usan el concepto de clase u objeto para programar microcontroladores.

Por que necesariamente es muy dependiente del compilador??? acaso al definir los objetos y las clases y metodos, no estamos usando ya OOP, independientemente del compilador??? el ejemplo de sander me parece totalmente viable.

.
.
.



Por cierto sander:

Yo creo que el LCD podria ser una clase, ya que existen LCDs con diferentes caracteristicas, por ejemplo la cantidad de caracteres que se pueden mostrar, existirian LCDs (objetos) de 8x2 lineas, 16x2, 20x4, etc, y los metodos comunes a esta clase (funciones) podrian ser escribir un byte, inicializarLCD, etc.

muy buena analogía, tu ejemplo me dio nuevas perspectivas, gracias.


Te estas complicando mucho, los objetos son de C++ y para un pic se usa C a secas el cual no se puede considerar nada como objeto a no ser que te montes tu propia estructura cosa que consumiria mucha memoria y programa.

Pero no crees tú que si definimos claramente los objetos de las funciones, sin ser necesariamente c++ estaríamos haciendo má modular nuestro firmware??? a eso apunta esto.


Desconectado AngelGris

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2480
Re: Cual es la diferencia entre Función y Objeto?
« Respuesta #7 en: 11 de Febrero de 2012, 20:40:32 »
  Seguramente cuando quieras usar la palabra reservada "class" te dará un error puesto que no existe en C. Como te comenta Merlinz, la programación orientada a objetos es cosa de C++ y no de C
De vez en cuando la vida
nos besa en la boca
y a colores se despliega
como un atlas

Desconectado MerLiNz

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2463
Re: Cual es la diferencia entre Función y Objeto?
« Respuesta #8 en: 11 de Febrero de 2012, 22:11:45 »
Mas sencillo de usar y mas claro pues si, por ejemplo rs232.Send(....); eso esta claro, el problema es que ningun compilador de C te deja hacer esto porque no existe este tipo codigo. La POO (programacion orientada a objetos) es de C++ y aun no he escuchado ningun compilador de C++ para un pic (no digo que no los haya, pero para atmel y microchip no he oido nada nunca).

Esto es, porque como ya digo un pic no tiene tanta memoria, ni es capaz de gestionar la ram de forma dinamica (tipo malloc, en C++ int *p=new int;). Vamos que con los pics lo que se intenta es crear un codigo lo mas rapido posible para obtener un control correcto del tiempo, sobretodo si tu aplicacion requiere mucha precision.

Desconectado Geo

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 922
    • Mexchip
Re: Cual es la diferencia entre Función y Objeto?
« Respuesta #9 en: 12 de Febrero de 2012, 02:34:51 »
aun no he escuchado ningun compilador de C++ para un pic (no digo que no los haya, pero para atmel y microchip no he oido nada nunca).
Para AVR si hay compilador de C++: avr-gcc (WinAVR), p. ej. las bibliotecas de Arduino generalmente con clases C++. También se de un par de compiladores de C++ para PIC, pero no los he probado (ni planeo hacerlo): http://www.sourceboost.com/Products/BoostCpp/Overview.html y http://www.iar.com/en/Products/IAR-Embedded-Workbench/Microchip-PIC18/ (descontinuado). Además, en una respuesta a un comentario en el foro de Microchip Technology se comentó que para Junio se estaría agregando soporte para C++ a la nueva línea de compiladores XC, pero no se si tomarlo más como rumor que como un comentario "oficial".
La imaginación es el límite.
Visita mi blog, en inglés o en español :).
Mini curso de introducción a VHDL en MEXCHIP :-/

Desconectado PalitroqueZ

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5490
    • Electrónica Didacta
Re: Cual es la diferencia entre Función y Objeto?
« Respuesta #10 en: 12 de Febrero de 2012, 13:50:13 »
...
Por que necesariamente es muy dependiente del compilador??? acaso al definir los objetos y las clases y metodos, no estamos usando ya OOP, independientemente del compilador??? el ejemplo de sander me parece totalmente viable.
...

la mejor forma de comprobarlo es que intentes compilarlo. haz la prueba y después nos comentas
La propiedad privada es la mayor garantía de libertad.
Friedrich August von Hayek

Desconectado MerLiNz

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2463
Re: Cual es la diferencia entre Función y Objeto?
« Respuesta #11 en: 12 de Febrero de 2012, 14:36:22 »
aun no he escuchado ningun compilador de C++ para un pic (no digo que no los haya, pero para atmel y microchip no he oido nada nunca).
Para AVR si hay compilador de C++: avr-gcc (WinAVR), p. ej. las bibliotecas de Arduino generalmente con clases C++. También se de un par de compiladores de C++ para PIC, pero no los he probado (ni planeo hacerlo): http://www.sourceboost.com/Products/BoostCpp/Overview.html y http://www.iar.com/en/Products/IAR-Embedded-Workbench/Microchip-PIC18/ (descontinuado). Además, en una respuesta a un comentario en el foro de Microchip Technology se comentó que para Junio se estaría agregando soporte para C++ a la nueva línea de compiladores XC, pero no se si tomarlo más como rumor que como un comentario "oficial".

Esta bien saberlo, pero como ya digo sera demasiado para un pic, cuando se programa un pic se intenta optimizar lo maximo posible, probablemente esto genere mas codigo que con un codigo normal. Es comodo pero menos optimizado, ya de por si usando C en vez de ASM no se optimiza tanto el codigo, pues imaginate añadiendole C++ con herencias, objetos, recursividad...

Desconectado JBQ

  • PIC16
  • ***
  • Mensajes: 118
Re: Cual es la diferencia entre Función y Objeto?
« Respuesta #12 en: 12 de Febrero de 2012, 21:49:09 »
...
Por que necesariamente es muy dependiente del compilador??? acaso al definir los objetos y las clases y metodos, no estamos usando ya OOP, independientemente del compilador??? el ejemplo de sander me parece totalmente viable.
...

la mejor forma de comprobarlo es que intentes compilarlo. haz la prueba y después nos comentas

No será necesario, con lo que dijeron angelgris y merlinz, me quedo más que claro.

Ahora, despejando algunas dudas más (lo se, disculpen la terquedad); se enfátiza bastante en que los métodos no son funciones, pero si nos basamos en el ejmplo del LCD de sander, claramente se ven que actuan como funciones. Como puedo distinguir un método de una función???

Desconectado MerLiNz

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2463
Re: Cual es la diferencia entre Función y Objeto?
« Respuesta #13 en: 12 de Febrero de 2012, 23:52:47 »
aqui te puedes enterar un poco de como va la cosa:
http://es.wikipedia.org/wiki/C%2B%2B

pero como ya he dicho, en C no existen clases, herencias, objetos, metodos... todo esto es C++. Por lo cual no puedes buscar un metodo donde no puede haberlo (C).
el C++ es una version extendida del C, en este se incluye todo lo que podias hacer en el C sin embargo le añadieron POO (metodos, funciones, herencias...).

Aqui puedes ver que es cada cosa en un lenguaje POO:
http://es.wikipedia.org/wiki/Programaci%C3%B3n_orientada_a_objetos

Desconectado JBQ

  • PIC16
  • ***
  • Mensajes: 118
Re: Cual es la diferencia entre Función y Objeto?
« Respuesta #14 en: 13 de Febrero de 2012, 01:58:00 »
Merlinz, por su puesto que también he leído esos enlaces en wikipedia, no extensamente pero si los he repasado. Mi pregunta va más por tener una comparación en un ejemplo práctico... saludos.


 

anything