Por útlimo, he leído que todo en c++ en un objeto.Todas las otras preguntas deberian estar respondidas en el libro a menos que esto tambien lo dijera ese libro :lol: :lol: :lol:
Lo del constructor, prueba declarándolo como private para que veas qué sucede.
Todas las otras preguntas deberian estar respondidas en el libro a menos que esto tambien lo dijera ese libro laugh.gif laugh.gif laugh.gif
Ahora quizás empiece a entender por qué anteriormente decíamos que un programa orientado a objetos se compone solmanete de objetosY si C++ está orientado a objetos, pues 2+2 son 4.
double cantidadcantidad es un objeto de la clase double?
C++ es un lenguaje multiparadigma. Y aca vemos como esa afirmacion en C++ no tiene ninguna base ya que los tipos primitivos como double (por usar tu ejemplo) no son clases.CitarAhora quizás empiece a entender por qué anteriormente decíamos que un programa orientado a objetos se compone solmanete de objetos
Entonces, en un lenguaje que sólo contemple el paradima de la POO, por ejemplo Java...Cita de: "Laurent"C++ es un lenguaje multiparadigma. Y aca vemos como esa afirmacion en C++ no tiene ninguna base ya que los tipos primitivos como double (por usar tu ejemplo) no son clases.CitarAhora quizás empiece a entender por qué anteriormente decíamos que un programa orientado a objetos se compone solmanete de objetos
Según tú, porque ahí declaremos una variable de un tipo primitivo entero, en Java no se puede afirmar que todo es un objeto?
Puesto que me dijiste que C++ era un lenguaje multiparadigma, supongo qoue lo dijiste porque c++ es una "mejora" del c(y c es un lenguaje estructurado), sólo intente poner un ejemplo usando java, ya que, tengo entendido que Java es uno de los lenguajes que más recoge el modelo de POO. O por lo menos, más que c++ sí, o eso o me han dicho (mi experiencia como programador se limita a un poco de c, por eso repito tanto he leído o me han dicho, ya que no es por experiencia propia).Cita de: "Laurent"Según tú, porque ahí declaremos una variable de un tipo primitivo entero, en Java no se puede afirmar que todo es un objeto?
No hay nada segun yo ... y no se a que viene Java ... si queres un lenguaje orientado a objetos puro podes usar Smalltalk.
Lack of OO purity
Java's primitive types are not objects. Primitive types hold their values in the stack rather than being references to values. This was a conscious decision by Java's designers for performance reasons. Because of this, Java is not considered to be a pure object-oriented programming language. However, as of Java 5.0, autoboxing enables programmers to write as if primitive types are their wrapper classes, and freely interchange between them for improved flexibility.
http://en.wikipedia.org/wiki/Java_%28programming_language%29 (http://en.wikipedia.org/wiki/Java_%28programming_language%29)
Puesto que me dijiste que C++ era un lenguaje multiparadigma, supongo qoue lo dijiste porque c++ es una "mejora" del c(y c es un lenguaje estructurado)
sólo intente poner un ejemplo usando java, ya que, tengo entendido que Java es uno de los lenguajes que más recoge el modelo de POO. O por lo menos, más que c++ sí, o eso o me han dicho (mi experiencia como programador se limita a un poco de c, por eso repito tanto he leído o me han dicho, ya que no es por experiencia propia).
Mi inglés no es muy bueno, pero de ese texto desprendo que los tipos primitivos de datos, son sólo eso y no tienen nada de objetos, tanto en c++(por venir del c) tanto en Java (porque los programadores lo consideraron apropiado por temas de rendimiento).
Tal como lo dice EternalIdol C++ es multiparadigma y puedes tener un programa 100% estructrado o un programa POO ( aunque no 100% poo).Creo que lo correcto es decir que C++ es orientado a objetos mas no es basado en objetos como podria decirse de Smalltalk.
Eso sino se, hasta donde se un lenguaje orientado a objetos es aquel que implementa el paradigma de Objetos, en cuyo caso C++ no es 100% orientado a objetos, partiendo desde el uso de tipos primitivos ni lo es tampoco java , ignoro si C# o smalltalk si lo sean en un 100%.Mas que nada me referia a que Smalltalk no esta orientado a sino que es programacion con objetos, solo hay objetos ...
Ok, lo he probado y el compilador se queja diciendo que no tiene acceso al método que define el constructor. Debo de entender que no tiene acceso puesto que la llamada al método se hace desde una función externa, en este caso main, verdad?Efectivamente, al momento de crear un objeto se hace una llamada a su constructor por defecto (recuerda que puede tener varios constructores).
Esto me hace reflexionar sobre algo; si todos los miembros de una clase(atributos y métodos) son privados, esta clase no podría ser usada por ningun objeto de ninguna otra clase, subclase o función externa no? Porque todos sus miembros serían inaccesibles. Porque para acceder a los atributos privados, se usa la interfaz de la clase(métodos declarados como públicos), pero si queremos acceder a métodos privados, como el caso del constructor, habría alguna solución?No lo podría llamar solución puesto que no es un problema, es cuestión de diseño. Si hubiera forma de acceder a un miembro privado, esto rompería la encapsulación que es lo que precisamente se busca con este tipo de miembros.
Todas las otras preguntas deberian estar respondidas en el libro a menos que esto tambien lo dijera ese libro laugh.gif laugh.gif laugh.gif
Hombre, supongo que si me leo las 700 hojas del libro, todas esas preguntas y más deberán de estar respondidas. Ahora bien, a medida que voy leyendo me surgen dudas y si esas dudas las voy aclarando desde el principio, seguro que con avanzo una base más sólida y a lo que va viniendo, seguro que le saco más provecho y lo asimilo mejor. O eso creo.Cierto. Pero también es cierto que hay que releer cuando no entiendes y hacer pruebas, por eso te comenté en qué sección del libro podrías encontrar algo referente a tus dudas.
Efectivamente, así se dice. También puedes decir que nombre es una instancia de string.Código: TextNo se podría decir, que nombre es un objeto de la clase string¿?
string nombre;
De hecho si usamos el método length (por decir alguno), se usaría:No sólo se puede, así es.
nombre.length()
ESo no se podría decir que lenght es un método de la clase string?
En el caso que esto sea cierto, no se podría decir queNo, cantidad es una variable o de tipo double, pero no una instancia de una clase u objeto en el estricto sentido de la palabra, puesto que double no es una clase. Ten en mente que C++ "hereda" muchas cosas de C, y que no es completamente orientado a objetos (siendo su principal característica, según su creador).Citardouble cantidadcantidad es un objeto de la clase double?