Home > Grupos sobre Informática > Grupo de Java >

Debates de Java

> Dudas sobre encapsulación, herencia y polimorfismo
Grupo de Java
Grupo de Java
2 Cursos online | 1 Test | 281 Documentos | 30 Imágenes | 27 Vídeos | 534 Debates | 16253 Miembros

Dudas sobre encapsulación, herencia y polimorfismo

Sven
Economia/programación universitat autò...
Escrito por Sven Sven el 16/03/2010

Buenas gente,

Hace cosa de un mes me meti en esto del lenguaje de java y la verdad es que me gusta mucho pero he llegado a cierto punto en el que todo lo que veo me suena un poco a chino (sin animo de ofender a cualquier chino jejeje).

Bien, mi duda trata sobre el tema de objetos en java. Entiendo los conceptos que he mencionado anteriormente pero mi problema es que no se como escribir el codigo de estas partes concretas.

Corregidme si me equivoco, si tubiera que crear un codigo y quisiera "aislar" algunos atributos para que no se me modificaran con cambios posteriores utilizaria la "encapsulación". En caso de querer utilizar el codigo de una clase padre utilizaria la "herencia" y finalmente, si tubiera una clase que fuera por ejemplo, Factura (donde me calculara por ejemplo la factura del gas o la electricidad), y más adelante quisiera una Factura2 para calcular el coste del telefono (teniendo en cuenta que comparten el mismo calculo pero con alguna diferencia y que Factura2 ademas tiene un calculo especifico para calcular su coste), entonces seria polimorfismo. Nose si me he explicado bien o no pero, el caso es que dicho en cristiano, no se escribir estos casos en codigo, nose que estructura seguir.

Bueno, muchas gracias de antemano por la ayuda.

PS: Si conoceis alguna pagina con ejercicios resueltos o podeis explicarme mi duda os estaria muy agradecido.

compartir


Jesús Manuel
Técnico superior universitario en info...
Escrito por Jesús Manuel el 16/03/2010

Hola Sven, este es un tema bastante largo si lo quieres comprender a profundidad. Tu problema no radica en Java, tu problema está en que no comprendes en detalle lo que es el Análisis y Diseño Orientado a Objetos (AOO y DOO). Para entender completamente la Programación Orientada a Objetos (POO) lo ideal sería entender antes los dos anteriores. Mi recomendación es que te leas un libro de AOO y DOO “puro”, ya que los libros sobre lenguajes de programación orientados a objetos, por lo general de manera introductoria tratan el tema de la Orientación a Objetos, antes de entrar en el código, pero lo hacen de manera muy resumida y suelen quedarle al lector algunas lagunas sobre el tema… Más ideal aun, seria que leas un libro de AOO y DOO simultáneamente con un libro de POO que en este caso, sería un libro que trate sobre Java. (Todo esto, si quieres profundizar de forma autónoma en el tema)


Los libros de Grady Booch y Kendall & Kendall están muy bien para el tema del AOO y DOO…


Bien, siendo un poco más específicos respecto a tu pregunta, según lo que he leído, la OO no es algo nuevo, y como su nombre lo dice es “eso” (una orientación a objetos), es decir, es una forma de ver las cosas, (desde el punto de vista, que todo es un objeto) y todo objeto tiene un estado, comportamiento e identidad. Y estos objetos a su vez son parte de algo, y ese algo lo denominan en esta área una clase (class). Se podría decir que una simple clase ya es una abstracción, (creo que perfectamente puedes pensar así: “toda clase es una abstracción”, por favor si estoy equivocado corregidme). Un objeto puede ser una clase, pero una clase no puede ser un objeto… Me explico, por ejemplo la clase mamífero, no es ningún animal en si, simplemente es una abstracción que encapsula una serie de animales (objetos) con características o comportamientos similares, y es por eso que una clase no puede ser un objeto, porque ningún animal se podría llamar “mamífero”, pero un objeto de esa clase si puede ser una clase, por ejemplo el objeto humano de la clase mamífero, pude ser una clase llamada humano que a la vez tiene objetos que se llaman hombre, mujer, niño, niña… etc… y así sucesivamente. (Espero no haberte liado con esto)



Jesús Manuel
Técnico superior universitario en info...
Escrito por Jesús Manuel el 16/03/2010

Eso para explicar el tema de la abstracción y a la vez ya hicimos mención de la encapsulación. Toda clase (abstracción) tiene fronteras, y el analista o programador, es quien elige esas fronteras dependiendo de los requerimientos del problema, me explico: Si necesitamos hacer un software para un hipódromo, pudiéramos incluir la clase mamífero y la clase caballo (no necesitamos incluir toda la lista de mamíferos que existen, como perro, gato, etc… porque sencillamente no los necesitamos). Eso viéndolo desde el punto de vista teórico y analítico, ahora desde el punto de vista práctico (la implementación) va a depender directamente del lenguaje de programación que estemos usando, pero en este caso es Java. Me explico: en la POO los objetos se envían mensajes entre sí para comunicarse, y debes saber que todo objeto en un lenguaje de POO es una instancia de una clase, y dicha clase tiene límites y fronteras que deben ser fijadas por el programador, para que estas instancias se puedan comunicar con ciertos objetos de otras clases y limitar o denegar la comunicación con otros objetos de otras clases, para que exista un “orden”.


En Java se utilizan las palabras reservadas public, prívate y protected, es decir que al crear una clase y utilizar cualquiera de estas palabras reservadas (es decir en todas las clases, porque el uso de estas palabras es obligatorio y si se omite, automáticamente el compilador usará la palabra prívate por defecto (en el caso de Java)) ya estamos haciendo uso de la encapsulación.


La Herencia depende directamente de los dos anteriores y tiene como finalidad extender la estructura de una clase base, o superclase (que son las clases que están arriba, en el orden jerárquico) haciendo uso de subclases, (clases que heredan métodos o atributos (funciones, procedimientos y variables) de las superclases o clases base). Ya lo vimos antes con el ejemplo de la clase mamífero de la cual podían surgir otras clases como: humano, caballo, perro, gato, etc… Esto se denomina Herencia simple, pero también existe la Herencia múltiple (no estoy seguro si en Java soporta la herencia múltiple, pero en C++ si). Para saber si una clase puede heredar a otra, simplemente usamos la pregunta “ ¿Es un? ”, por ejemplo: “ ¿El caballo ‘es un’ mamífero? ” en caso de que la respuesta sea afirmativa entonces caballo hereda de mamífero, en caso contrario no… Si A es un B entonces A hereda de B… así de simple.




Jesús Manuel
Técnico superior universitario en info...
Escrito por Jesús Manuel el 16/03/2010

El polimorfismo, está muy relacionado con la Herencia, y el polimorfismo lo único que significa es: que una palabra signifique cosas distintas, o que un método con el mismo nombre, lleve a cabo tareas, funciones o procedimientos diferentes, dependiendo del “tipo”. Lo que dices sobre las facturas es “casi” correcto, solo que no sería Factura y Factura2, sino simplemente Factura, y ese es el poder del polimorfismo, no importa que tenga el mismo nombre ya que va a depender del tipo y no del nombre. El polimorfismo se logra con la sobrecarga de operadores y las funciones virtuales, (este es un tema también un poco extenso y deberías recurrir a algún libro si quieres profundizar). Como ejemplo, supongamos la clase mamífero y la extendemos con las clases caballo y humano que heredan propiedades de la clase mamífero, y dentro de la clase caballo y humano tenemos el método miembro (función miembro) correr, ya que los objetos o instancias de ambas clases pueden correr, pero ambos lo hacen de forma distinta, entonces definimos el método miembro correr como “virtual” ya que será redefinido. Luego podemos referirnos a cada método en el código a la hora de definirlos por medio de el operador de resolución de ámbito “ : ” por ejemplo:


Caballo:correr(int a)

{…}


Humano:correr(int a);

{….}


Luego a la hora de la implementación dependiendo del objeto que creemos, se usará (o ejecutará) el método "correr" dependiendo del tipo de objeto, es decir, dependiendo de que si es un caballo o un humano…


Creo que ya es bastante larga la explicación, pero como te comentaba al principio es un tema bastante extenso y ten en cuenta que en la OO no solo existen estos 3 elemento que mencionas, sino que son 7 de los cuales 4 son primarios y obligatorios y 3 secundarios. Estos son: Abstracción, Encapsulación, Modularidad, Jerarquía y Tipos (tipificación) Concurrencia, Persistencia. Todos muy relacionados entre sí…


Fíjate que no existe en los elementos de la OO la Herencia ni el Polimorfismo, esto es porque la Herencia es solo uno de los tipos de relaciones que existen en la OO, estos son: Asociación, Herencia, Agregación, Uso, Instanciación, Metaclase. Y en la Herencia existe la Herencia Simple y Múltiple. El polimorfismo es parte de la Herencia y también existe Polimorfismo Simple y Polimorfismo Múltiple. Y todo esto sumado entra en el elemento de la Orientación a Objetos denominado "Jerarquía".


Si te preguntas en qué momento haces uso de todo esto en Java, pues decirte que con cualquier código por muy simple que sea, ya estas haciendo uso de la mayoría de estos elementos, solo que lo haces sin darte cuenta ya que no tienes un nivel de conocimiento alto o un bajo nivel de abstracción sobre el tema. (Recuerda que mientras el nivel de abstracción es más bajo, es más difícil)


Cualquier duda, corrección o agradecimiento, serán bien recibidos…


Saludos, Suerte y Éxitos!




Sven Sven
Economia/programación universitat autò...
Escrito por Sven Sven el 16/03/2010

Te estoy muy agradecido Jesús Manuel! Me has ayudado mucho a comprender mejor los conceptos! :D.

Lo que pasa es que me cuesta definir el código aún. Sé que tengo que utilizar pero no se exactamente como. En el caso de la herencia no lo vi muy complicado, vi que se utilizaba mucho la forma: clase"extends"(clase padre) y poca cosa más. Pero en el caso de la encapsulación no lo acabo de ver y en el polimorfismo más o menos. Sobre los constructores, siempre se "llaman" con la forma "this"? Algun consejo sobre esto? :S


Una curiosidad, en el curso en el que estoy me hacen utilizar Eclipse. Eclispe es el más utilizado?

Muchisimas gracias otra vez Jesús.

PS: Me encanta esto del Java pero me cuesta avanzar en este punto.


Jesús Manuel
Técnico superior universitario en info...
Escrito por Jesús Manuel el 17/03/2010

Hola, me alegra que te resulte de utilidad la información, ya que me tomo un poco de tiempo escribirla.... :p

Con respecto a las dudas que me planteas, he recordado que en la pagina:

http://www.illasaron.com/

o

http://www.illasaron.com/html/


Publicaron recientemente unos videotutoriales sobre Java, que creo te pueden ser de mucha utilidad, por ahora van 18 capítulos pero creo que aun faltan algunos capítulos por publicar. Los vídeos son recientes y tienen una excelente calidad tanto en el contenido como en la imagen (cosa que ya es costumbre y de esperarse de los vídeos de Jesús Conde...)


Si ya conoces lo básico, como los condicionales, operadores, loops y bluces (for, do, while, if, else, case... Etc) te recomiendo descargar los vídeos a partir del capitulo 10, que es desde donde se empieza a hablar sobre POO. En el capitulo 11 te explican la Herencia, Interfaces y paquetes (lo que es la Jerarquía en OO). En el capitulo 14 te explican el uso del this y en el 15 la sobrecarga de métodos (para obtener el polimorfismo). En fin, creo que desde el capitulo 10 hasta el 18 hay mucho material que te puede ayudar a aclarar las dudas y a sobresalir en tu trabajo.


Con respecto al IDE Eclipse, pues si.... Según he leído en varias oportunidades, es uno de los más utilizados, yo personalmente prefiero el NetBeans (el cual también es uno de los más usados), pero independientemente de cual uses, lo importante es el código que escribas, el IDE en el estudio es de muy poca importancia, solo cuestión de gustos... Ahora, en el área laboral pueden haber razones de peso para elegir entre un IDE y otro, ya que algunos traen algunas funciones que otros no y tal vez para el proyecto que se valla a realizar se necesite utilizar esa función especifica... Pero te repito, el IDE tiene muy poca importancia en comparación con el código, El IDE puede hacerte el trabajo un poco más cómodo, pero no te ayudará a escribir mejor código. La calidad del código dependerá únicamente de ti...


Como dato adicional referente a tu "PS:", decirte que no debes sentirte frustrado, indudablemente el tema de la programación es un tema "difícil" de igual forma como lo es la matemática, etc... Aprenderlo requiere tiempo y dedicación, y sobre todo: pasión... Yo al igual que tu, he ido tratando de aprender (en mi caso por cuenta propia) y afortunadamente con el pasar del tiempo he ido notando una evolución y un crecimiento personal e intelectual. Recuerdo que comencé con pascal (que fue lo que me dieron el en instituto) y me parecía algo muy difícil, pero me llamaba mucho la atención, luego me pase a C y pensé que era lo mejor, luego me entere que existía C++ y me emocione y descargue infinidad de tutoriales, luego compré un libro para lo cual tuve que viajar a otra ciudad, porque aquí donde vivo, "la programación no existe!".. Luego compre algunos otros libros al ver que de esa manera estaba aprendiendo mucho más rápido que por medio de los tutoriales, ademas de que la información de los libros es mas solida y de mejor calidad. Llegue al punto en C++ en el que no entendía nada, porque viniendo de C la OO para mi no existía, entonces compre uno libros de AOO y DOO, y así fue como entendí la OO... Finalmente vi que Java es un poco mas como en la OO con respecto a C++ sobre todo por los punteros, que me han dado muchos dolores de cabeza (pero aun así continuo perfeccionando).


Recuerdo que no entendía las variables y constantes, luego cuando aprendí, pensé: que fácil!

Recuerdo que no entendia los loops ni los bucles y luego cuando aprendí, pensé: que fácil!

Recuerdo que no entendía los vectores y luego cuando aprendí, pensé: que fácil!

Recuerdo que no entendía las funciones y luego cuando aprendí, pensé: que fácil!

Recuerdo que no entendía las estructuras y luego cuando aprendí, pensé: que fácil!

Recuerdo que no entendía las clases y objetos y luego cuando aprendí, pensé: que fácil!

......... Y así poco a poco he ido avanzando... Apuesto a que te pasa lo mismo ;)...


Así que ánimos! Como dice el dicho: "lo que ahora es fácil una vez fue difícil!"


Y la OO te hará ver el mundo y las cosas complicadas y difíciles desde un punto de vista mas fácil, así que: definitivamente vale la pena el esfuerzo.


(No olvides mirar los vídeos que te mencione, porque estoy seguro que te serán de mucha utilidad.)


Saludos, Suerte y Éxitos!


Sven Sven
Economia/programación universitat autò...
Escrito por Sven Sven el 17/03/2010

Otra vez, mil gracias por tu comentario Jesús! :D realmente me ha animado tu respuesta! Prometo mirarme los links que me has pasado, si tú me dices que me iran bien, es que me iran bien jejeje.

Aun asi, me recomiendas comprarme libros o con estos tutoriales tendre suficiente? En el caso de necesitar libros, me puedes decir nombre y editorial?

En tema de programación soy nuevo asi que no creo que pueda aportarte mucho asi que si necesitas ayuda en alguna cosa, cualquier otra cosa, como economia, dimelo que intentaria ayudarte :).

Mi intención es trabajar de programador pero aun lo veo lejano... Un programador que trabaja en una empresa tiene que dissenyar primero que tiene que hacer el programa (lo que vendria a ser el analisis y todo esto) o se limita a escribir en código lo que un analista le ha dado?

Un abrazo.


Jesús Manuel
Técnico superior universitario en info...
Escrito por Jesús Manuel el 18/03/2010

Hola, mi respuesta será un poco resumida porque estoy algo cansado...


Primero que nada me alegra que te sirvieran de algo mis palabras...


Si, te recomiendo comprar un libro... Antes de hacerlo mira el indice y verifica que se explique en detalle los temas que te generan confusión. Libros sobre Java específicamente no conozco, yo me dedico un poco más a C++ y lo que sé de Java es gracias a C++ (Java es un C++ simplificado, podría decirse... C++ es un poco más difícil, sobre todo en lo que se trata del manejo dinámico de memoria, pero esa dificultad añadida a la vez lo hace un lenguaje un poco más potente y rápido con respecto a Java, sobre todo en aplicaciones de escritorio...)


Las editoriales que conozco que siempre tienen libros de calidad son:

Mc Graw Hill

Addison Wesley Longman

Anaya


También te puedes valer de tutoriales, y paginas web's.... Pero según mi experiencia los libros son mas completos y sólidos... Ademas de que te sirven como referencia a la hora de citar algo, con mayor valides que un tutorial que a lo mejor es realizado por una persona anónima. En pocas palabras el libro te da mayor seguridad y garantías de que el contenido sea verídico y de calidad.


Aun así, no esta demás conseguir algunas paginas web's y tutoriales, porque a veces los libros son muy técnicos, entonces siempre es bueno complementarlo con algún tutorial que te ayude a comprender lo mismo, viéndolo desde un punto de vista diferente...


Haciendo referencia a tu ultima pregunta, existen ambos casos más uno... Es decir, existen "programadores" "analistas", y "analistas programadores"... De los cuales el programador es el menos importante... (sin ninguna discriminación) Pero generalmente el programador es uno de los que tiene el sueldo más bajo, (aunque existen siempre casos muy particulares y todo esto esta sujeto a muchas variantes, así que no es nada constante o seguro esto que te estoy diciendo). Todo depende directamente de la productividad: dime cuanto produces y te diré cuanto ganas.... En el campo laboral la tarea de un informático, ingeniero de sistemas, de software etc.. , va a depender del puesto que le asignen según sus conocimientos y experiencias, y existen muchos niveles en la jerarquía u organización de la empresa...


Tengo por aquí una enciclopedia en la que describen todos los niveles (puestos de trabajo) y las funciones de cada uno de ellos.... Cuando tenga un tiempo lo publico aquí mismo en este debate, ya que es un poco largo..


Saludos!


P. D: Gracias por ser agradecido... De seguro que si algún día se me presenta una duda sobre economía, te la haré llegar.


Jesús Manuel
Técnico superior universitario en info...
Escrito por Jesús Manuel el 25/03/2010

Hola, que tal... Como te había comentado, aquí estoy de vuelta para el asunto de la estructura jerárquica o categorías laborales en el área de informática y computación.


Según la enciclopedia que te comente las categorías son las siguientes:


El director del centro de proceso de datos

El director de sistemas, análisis y diseño

El director de programación

El director de explotación

ANALISTAS

Analistas de sistemas

Analistas de aplicaciones

PROGRAMADORES

Programadores de sistemas

Programadores de aplicaciones

PERSONAL DE OPERACIONES

Operadores de entrada de datos

Operadores de computadora

Bibliotecarios del sistema

OTROS PROFESIONALES DE HARDWARE

El director del departamento de servicio técnico

El director de laboratorio de hardware

Los responsables de productos hardware

Los técnicos de laboratorio de hardware

Los técnicos de mantenimiento de nivel 1 y nivel 2


(La enciclopedia menciona y explica el papel de cada uno de ellos, pero es muy largo y no tengo el tiempo (ni las ganas jeje... ) de escribirlo)


Puedes ver que esta bien surtido y hay mucho campo... Ya que como te decía antes, la elaboración de sistemas realmente complejos, requieren de todo un equipo de personas especializadas (y todo ello sin mencionar la parte de diseño gráfico, administración, mercadeo, recursos humanos, etc... ) Pensar en hacer un sistema complejo individualmente es como pensar en hacer un rascacielos tu solo.... Y en muchos casos no solo construirlo, sino también extraer y procesar la materia prima, y las herramientas.... Lógicamente escapa a las capacidades individuales humanas... , igualmente (hablando de software) muchos proyectos escapan a la capacidad de intelecto humano individual...


Según Grady Booch en su libro "Análisis y Diseño de Sistemas Orientado a Objeto con Aplicaciones, 2º Edición", el equipo de desarrollo se estructura de esta manera: (aquí ya se orienta más, al software OO específicamente)


Jefe de proyecto

Analista

Ingeniero de re-utilización

Control de calidad

Jefe de integración

Documentalista

Responsable de herramientas

Administrador del sistema


Bien, creo que ya no te debo nada... :)


P. D: estoy casi seguro que cometí algunos errores en uno de los comentarios anteriores con respecto al polimorfismo... Aun tengo algunas dudas sobre ello, así que no aclarare aun (pero si que lo haré próximamente). Primero tengo que verificar algunas cosas (diferencias) entre C++ y Java, sobre la sintaxis. Tal parece que Java no distingue por diferencia de tipos, sino por diferencia de argumentos. (tengo que verificar). Te recuerdo que yo también estoy aprendiendo así que lógicamente también soy propenso a cometer errores, pero es justo así como se aprende... De todas maneras si hay alguien que lea esto y tenga un poco más de experiencia en el tema, le agradezco mucho su comentario (gracias).


Y dime Sven, has visto los tutoriales? Que te han parecido?


Saludos!


Hermes Morales
Bogotá, Colombia
Escrito por Hermes Morales el 05/04/2010

Hola, vi que necesitas ayuda con java, aunq veo q ta han respondido me parece q las respuestas son limitadas, la informacion en internet es algo confusa cuando non se domina un tema especifico, bueno, lo q entiendo es q te refieres a la sintaxis q se debe utilizar en java,. Pero antes te bpregunto, respecto a hacer o crear codigo, q conocimientos tienes? Entre esos esdtan como crear una clase, herencia de una clase, poliformismo, por ejemplo, yo utilizo netbeans como plataforma parea hacer mis proyectos, una simple accion es abrir netbeans(obviamente despues de instalarlo), voy a nuevo proyecto, le doy nombre y listo, esto me crea la clase principal llamada main, tu puedes crear clases a tu antojo, crear metodos como desees, la clase principal debe tener el metodo principal para ejecutar cualquier otro metodo, su sintaxis es:

//primero nombre de la clase:

Public class nombredelaclase {

//despues el llamado al metodo main:

Public static void main (String[]args){


}

}

Como hago para crear una inteface? Herencia?

Bueno, eso no es complejo pero puedo enviarte pantallasos para q entiendas mejor, esto es solo el principio, dime las dudas que tengas, te recomiendo que bajes el entorno de desarrollo de netbeans, asi puedo ayudarte mas facil, es el entorno que manejo, recuerde bajar tambien la plataforma para que pueda correr, el jdk y el jre mejor dicho aqui le mando una direccion que te da mas detalles:

Http://www.mikengel.com/blog/tutorial-como-instalar-ide-netbeans-6-8-en-windows-xpvista7

Este otro enlace es el de la pagina principal:

Http://netbeans. Org/community/releases/68/install_es. Html

Ok, es todo por ahora, espero q te sirva de algo y escribame para ver en que le puedo ayudar mas.




Conrado Yllera De Llano
Técnico especialista en electrónica de...
Escrito por Conrado Yllera De Llano el 12/04/2010

Hola Sven.


Jesús Manuel ha respondido a todas tus preguntas estupendamente.


Respecto al tema de libros, yo aprendí java con uno que se llama "Aprendiendo Java 2 en 21 días" de la editorial PEARSON.


El problema es que Java (y lo que no es Java pero que va asociado) evoluciona a tal velocidad que es difícil mantenerse al día.


Te recomiendo que visites la página oficial en Sun. En la parte de desarrolladores siempre hay publicaciones de pago (y tutoriales gratis que están muy bien).


Si lo que vas a hacer es comprar un libro en un centro, asegúrate que cubra las últimas especificaciones (estamos en Java 6, basado en java 2 pero con bastantes ampliaciones).


Y por supuesto mira el índice y lee algo del interior para asegurarte que las explicaciones sean todo lo claras que puedan ser.


Yo desarrollo con NetBeans (gratuíto y potente). En su momento probé Eclipse pero pedía muchos recursos y, para depuración, era terrible.


Te digo esto porque normalmente tienes que hacer experimentos para resolver ciertas dudas, aunque Internet es una buena fuente de conocimiento (si, algunos escriben cosas que ni siquiera han probado, pero para eso está el sentido común y la prueba y error).


Si tienes dudas concretas pon el código e intentaremos ayudar.


Saludos


Conrado Yllera

Acarelly Consultores


Carlos Baez
Distrito Nacional, R...
Escrito por Carlos Baez el 07/05/2010

Jesus Manuel, Cual es tu correo?


Jesús Manuel
Técnico superior universitario en info...
Escrito por Jesús Manuel el 08/05/2010

Hola Carlos, prefiero no compartir mi direccion de correo...

Pero puedes ponerte en contacto conmigo por este medio, ya sea bien: enviandome un privado o participando en un debate..

Saludos!


Carlos Baez
Distrito Nacional, R...
Escrito por Carlos Baez el 09/05/2010

Hello, sorry entonces yo te doy el mio, es que me gustaria consultar unas cuantas cosas y me gusta ligarme con gente como tu.. Ing. Carlosbaez@hotmail. Com


Carlos Acosta
Santiago, Chile
Escrito por Carlos Acosta el 11/05/2010

Hola soy nuevo en esto..
estudio ing,informatica y estoy en java desearia q me ayudaran con lo
siguiente :
se tiene una cola de numeros enteros , se pide que cree un metodo q invierta la cola solo con pilas auxiliares.

agradeceria bastante la ayuda..


Conrado Yllera De Llano
Técnico especialista en electrónica de...
Escrito por Conrado Yllera De Llano el 24/05/2010

¿Qué son pilas auxiliares?


Si se trata de tener una lista de números, por ejemplo en un ArrayList o un Vector y pasarlos a otro en orden inverso, eso es fácil pero antes hay que saber si te ponen algún tipo de condicionante.


Pon un código de ejemplo o algo que sirva para saber qué has hecho y qué no funciona.


Saludos


Conrado Yllera

Acarelly Consultores


Diego Gamboa
Ingenieria de sistemas universidad nac...
Escrito por Diego Gamboa el 31/05/2010

Llama la atención el nombre del debate; sin duda es muy importante tener en cuenta todos estos detalles para sacar un mayor provecho al momento de preparar un proyecto en un mundo OO, jesus manuel lo explica muy bien te felicito. Algo que quiero resaltar es " ( Se podría decir que una simple clase ya es una abstracción, (creo que perfectamente puedes pensar así: “toda clase es una abstracción”, por favor si estoy equivocado corregidme). Un objeto puede ser una clase, pero una clase no puede ser un objeto... )" En cierta forma cuando hablamos ya directamente en la programación hay que tener cuidado con eso, podria confundir a varios que se inician en java.. Recuerden que existen clases abstractas y otras que no, estas abstractas son aquellas que se definen primeramente como "abstract class" y en ellas se encuentran metodos abstractos , por lo general estas clases son implementadas para ser heredadas por otras, en donde sus metodos abstractos son tipeados nuevamente con las acciones a ejecutar. Bastante curioso no? Entonces, para los que pueden confundirse un poco, pueden ver toda clase como un tipo de molde que puede variar sus propiedades y que al ser rellenado da origen a un objeto o una nueva instancia de la clase. Asi este molde puede heredar algunas variables o metodos de otros moldes para darle mas propiedades al objeto. Por otro lado, un objeto parte de una clase y al ser instanciado deja de ser la clase como tal, marcados durante su uso como hijos de dicha clase por lo tanto se dice que son del tipo de ella. Ejemplo: tenemos la clase Humanos sirve de molde para todos los humanos. "pedro" es un objeto del tipo humano mas no puede ser llamado pedro como el molde de todos los seres humanos de ahi que pedro ya no es la clase o el "molde", sino mas bien, una instancia, como muchos otros objetos del tipo humano que parten de la Clase "Humanos" ; entonces un objeto parte de una clase pero una clase no puede partir de un objeto, donde el usuario o el programador varian las propiedades del objeto instanciado. Saludos Cordiales.


Jesús Manuel
Técnico superior universitario en info...
Escrito por Jesús Manuel el 01/06/2010

Excelente aclaratoria Diego...


Estaba seguro que esa parte de mi explicación, se prestaba a mucha confusión, pero en el momento no encontré otra forma de explicarlo. Creo que con tu comentario a quedado bastante claro. Por lo tanto te lo agradezco .


Gracias!




Responder


Quiero recibir alertas por email cuando haya mensajes nuevos en este debate

Debe cumplir las normas de contenido y normas de conducta
Al escribir en el debate:
  1. Repasa la ortografía y no escribas en formato SMS.
  2. Lee el texto dos veces antes de publicar.
  3. No escribas todo en mayúsculas o negritas.
 
Páginas internacionales: España  |  Italia  |  Francia  |  México  |  Alemania  |  Reino Unido  |  Argentina  |  Chile  |  Colombia  |  USA |  India |  Y próximamente: Brasil | 

Búsquedas frecuentes: condilom como hacer crecer la barba algebra de mancil antepresente piston berdan

EMAGISTER Servicios de formación, S.L. Copyright 1999/2013.