Introducción a Java y la Programación Orientada a Objetos (POO)Hola mundo que tal, soy 3n31ch y esta es el primer tutorial del curso de Java para elhacker.net:
Inducción a Java y la Programación Orientada a Objetos.Quiero indicarte antes de empezar, que para seguir este “curso” no necesitas ningún tipo de conocimiento de programación y si ya los tienes, genial, para ti será todo mucho más fácil.
Bien, entonces empecemos:
"Java es un
lenguaje de programación multiplataforma que trabaja bajo el paradigma de
Programación Orientada a Objetos (POO)"
Ya tan solo con ver esta frase podemos extraer tres afirmaciones/características importantes que hacen a Java lo que es:
- Java es un lenguaje de programación
- Java es multiplataforma
- Java trabaja bajo el paradigma de Programación Orientada a Objetos(POO)
Si entiendes cada una de estas afirmaciones, no es necesario que sigas viendo este tutorial, puedes ir al siguiente haciendo click aquí
Java es un lenguaje de programaciónUn lenguaje de programación es en palabras simples un
lenguaje formal con el cual podemos indicarle a un ordenador las distintas tareas que queremos que realice. Esto lo hacemos mediante
algoritmos.
Un
algoritmo es simplemente una
secuencia de pasos con un orden especifico que permite cumplir un objetivo, por ejemplo, una receta de cocina nos indica mediante un algoritmo que acciones tenemos que realizar para obtener un producto.
Si buscamos abstraer esta definición a un concepto más informático podemos utilizar de ejemplo un videojuego:
| Imaginemos un videojuego en el que controlamos a un guerrero que tiene que salvar a una princesa perdida en el bosque. |
| Un algoritmo eficaz para llegar hasta ella sería el siguiente: 1. Derecha 2. Arriba 3. Derecha 4. Derecha 5. Abajo 6. Abajo 7. Abajo 8. Abajo
|
| Otro algoritmo más eficiente de hacer lo mismo seria el siguiente: 1. Abajo 2. Abajo 3. Abajo 4. Derecha 5. Derecha 6. Derecha |
Si te das cuenta en los ejemplos anteriores utilicé las palabras “
eficaz” y “
eficiente”, estas dos palabras son útiles para medir que tan bueno es un algoritmo:
- Eficaz: Algoritmo que cumple con el objetivo propuesto.
- Eficiente: Algoritmo que utiliza la menor cantidad de recursos posibles.
Un ejemplo de algoritmo poco eficaz es el siguiente: | Un ejemplo de algoritmo poco eficiente es el siguiente: |
| |
Entonces, recapitulando: Un lenguaje de programación es un lenguaje formal con el cual podemos indicarle a un ordenador mediante un algoritmo que pasos ejecutar para cumplir un objetivo.
Es pertinente mencionar que una ejemplo de algoritmo mas adecuado seria el que se realizaria para encontrar el camino optimo y no directamente una secuencia de pasos textuales. Pero para simplificar el concepto utilice una secuencia de pasos como ejemplo.
Si quieres ahondar más en lo que es un algoritmo, distintos tipos de algoritmos, ejercicios u otros temas relacionados accede al siguiente link: Curso: Algoritmos básicos. (No disponible aun)
Java es MultiplataformaSe dice que un lenguaje es multiplataforma cuando se tiene la capacidad de ejecutar el mismo programa en distintos sistemas operativos.
Esta fue una de las razones por la cual se creó Java, que al correr sobre la
JVM tiene la capacidad de ser multiplataforma.
JVM (Java Virtual Machine) o en español Máquina Virtual de Java es como su nombre lo dice una Máquina Virtual que se ejecuta sobre el sistema operativo y que hace la función de interpretar el
bytecode generado por un
compilador de Java y ejecutar las instrucciones en el
sistema operativo.
Puede que suene a chino todo lo que dije, pero es mucho más fácil de lo que suena, déjame que te lo explique con un diagrama:
Lo primero que pasa es que tu escribes tu código de Java el cual llamaremos
código fuente, luego lo
compilas, el compilador esta graficado como una caja negra ya que no nos interesa que es lo que pase dentro del mismo lo único que nos interesa es que el resultante es un
Bytecode el cual llamaremos
código objeto. Posteriormente la
JVM alojada sobre el
Sistema Operativo que ejecute el Bytecode lee dicho archivo y lo interpreta de tal forma que el Sistema Operativo pueda entenderlo adecuadamente. En resumen, el algoritmo es el siguiente:
1. Programar Código Java (Código fuente)
2. Compilar código Java en Bytecode (Código objeto)
3. Ejecutar Bytecode en JVM
4. JVM interpreta y ejecuta las tareas en el Sistema Operativo
Y lo único que nos interesa a nosotros es la primera parte, todo lo demás es automático.
Java trabaja bajo el paradigma orientado a objetosUn
paradigma de programación puede ser definido como un enfoque, filosofía, diseño o pensamiento para generar soluciones algorítmicas.
Otra vez me puse a hablar chino, así que lo traduciré: Un paradigma es básicamente un patrón o metodología utilizado como modelo para algo. Si lo aplicamos a la programación tenemos un “
modelo base para programar”.
El paradigma/modelo de programación orientada a objetos es particularmente popular en la actualidad y como puedes intuir se basa en el manejo de “
objetos”.
Los objetos pueden ser definidos como un conjunto de datos y funciones, los cuales son instanciados a partir de clases las cuales definen que atributos y métodos tiene un objeto.
Es más fácil entender que es un objeto y una clase a partir de un ejemplo:
Imaginemos otro videojuego que trata sobre cuidar a un animal virtual (tipo Tamagotchi) en el que tenemos un perro llamado Toby
| Toby es un objeto, no importa que la idea real a la cual haga referencia este programa sea la de un perro, en la programación no se diferencia una cosa de un ser vivo ya que ambos son abstraídos como un simple conjunto de datos estructurados.
Toby tiene los siguientes atributos (datos asociados):
Y tiene los siguientes métodos (funcionalidades):
|
Pero un día, Toby resulta encontrarse con otro perro llamado Body:
| Toby y Body son objetos distintos ya que corresponden a entidades distintas.
Pero Body tiene exactamente los mismos atributos que Toby, la única diferencia yace en los valores de dichos atributos.
|
| Sería ilógico tener que definir nuevamente la estructura de datos o funciones que tienen ambos, es por esto que existen las Clases. |
La clase Perro define un patrón o modelo con el cual se podrán crear objetos de la misma. La forma que se crean los objetos es mediante algo que denominamos “Constructor”.
Un constructor es una “función” especial que tienen las clases para instanciar/crear objetos. Los constructores normalmente requieren de datos de entrada que serán aquellos que nos permitan personalizar nuestro objeto. En este caso los datos de entrada serian: Nombre, Color y Sexo.
Entonces se puede decir que Toby es una instancia de la clase Perro que recibe como parámetros los siguientes valores: Toby, Café, Masculino (Nombre, Color y Sexo).
Esto lo podríamos representar de la siguiente forma:
| Perro1
Nombre: Toby Color: Café Sexo: Masculino
| | Perro2
Nombre: Body Color: Gris Sexo: Masculino |
Entonces, recuerda:
- Una Clase es el modelo que define los atributos y métodos que tiene un objeto.
- Un Objeto es la instancia de una clase el cual dispone de los atributos y métodos definidos por la clase.
Este es el principio general del paradigma de programación orientada a objetos, pero existen cuatro cosas importantes que hacen este paradigma lo que es: Los 4 pilares de la programación orientada a objetos.
Si quieres saber más sobre el paradigma orientado a objetos y otros paradigmas más entra al siguiente link: Apunte: Paradigmas de programación. (No disponible aun)Por ahora ya tenemos todas las herramientas necesarias para iniciar con este curso, así que te espero para las siguientes entregas. Y ánimo, porque esto recién empieza.
RECURSOS ASOCIADOS A ESTE TUTORIAL:RECURSOS COMPLEMENTARIOS:
- Curso: Algoritmos Básicos (No disponible aun)
- Apunte: Paradigmas de programación (No disponible aun)