jueves, 17 de marzo de 2016

01 (Clase) POO Java by Cus: Paradigmas, Java y Elementos de un programa




---------------------------------------------- Clase ---------------------------------------------

Paradigmas de programación.

Un paradigma de programación es una propuesta tecnológica adoptada por una comunidad de programadores y desarrolladores cuyo núcleo central es incuestionable en cuanto que únicamente trata de resolver uno o varios problemas claramente delimitados; la resolución de estos problemas debe suponer consecuentemente un avance significativo en al menos un parámetro que afecte a la ingeniería de software.
Un paradigma de programación representa un enfoque particular o filosofía para diseñar soluciones. Los paradigmas difieren unos de otros, en los conceptos y la forma de abstraer los elementos involucrados en un problema, así como en los pasos que integran su solución del problema, en otras palabras, el cómputo.

Programación estructurada.

La programación estructurada es un paradigma de programación orientado a mejorar la claridad, calidad y tiempo de desarrollo de un programa de computadora, utilizando únicamente subrutinas y tres estructuras: secuencia, selección (if y switch) e iteración (bucles for y while), considerando innecesario y contraproducente el uso de la instrucción de transferencia incondicional (GOTO), que podría conducir a "código espagueti", que es mucho más difícil de seguir y de mantener, y era la causa de muchos errores de programación.

Programación modular.

La programación modular es un paradigma de programación que consiste en dividir un programa en módulos o subprogramas con el fin de hacerlo más legible y manejable.
Se presenta históricamente como una evolución de la programación estructurada para solucionar problemas de programación más grandes y complejos de lo que ésta puede resolver.

Programación orientada a objetos.

La programación orientada a objetos (POO, u OOP según sus siglas en inglés) es un paradigma de programación que usa objetos en sus interacciones, para diseñar aplicaciones y programas informáticos.
Está basada en varias técnicas, incluyendo herencia, cohesión, abstracción, polimorfismo, acoplamiento y encapsulamiento.
Su uso se popularizó a principios de la década de 1990. En la actualidad, existe una gran variedad de lenguajes de programación que soportan la orientación a objetos.

Programación orientada a Aspectos.

La Programación Orientada a Aspectos o POA (en inglés: aspect-oriented programming) es un paradigma de programación relativamente reciente cuya intención es permitir una adecuada modularización de las aplicaciones y posibilitar una mejor separación de responsabilidades (Obligación o correspondencia de hacer algo).
Gracias a la POA se pueden encapsular los diferentes conceptos que componen una aplicación en entidades bien definidas, eliminando las dependencias entre cada uno de los módulos. De esta forma se consigue razonar mejor sobre los conceptos, se elimina la dispersión del código y las implementaciones resultan más comprensibles, adaptables y reusables. Varias tecnologías con nombres diferentes se encaminan a la consecución de los mismos objetivos y así, el término POAes usado para referirse a varias tecnologías relacionadas como los métodos adaptativos, los filtros de composición, la programación orientada a sujetos o la separación multidimensional de competencias.

Buenas prácticas de programación

  • Escribe tus programas lo más simple y directo posible. Keep it simple.
  • Si trabajas con un compilador, ajusta sus opciones para que arroje la mayor cantidad de errores y advertencias posibles al compilar, de ese modo, tu aplicación tendrá menores chances de obtener errores aleatorios. En base a lo anterior, revisa cada mensaje para tomar las medidas pertinentes.
  • Todo programa debe ser previamente comentado, explicando el propósito, funcionamiento completo y el resultado esperado.
  • Dentro de las funciones definidas, establece un espaciado o indentación, que resalte la estructura funcional de la aplicación y facilite la lectura al programador al que le corresponda analizar el código.
  • Por lo general, se usa un nivel de indentación por cada bloque de código (sentencias condicionales y bucles son consideradas como bloques de código embebido dentro de otro, por lo que se recomienda la indentación), ésta indentación corresponde a una sangría que comúnmente tiene el valor de una tabulación (tecla Tab) o bien tres o cuatro espacios.
  • Es importante que el tamaño de las sangrías sean regulares (consistentes) y no varíen a lo largo del código, es decir, si el primer bloque ocupa como indentación una tabulación, el resto de bloques deben ser indentados con una tabulación adicional por cada nivel, con eso se facilita la lectura en cualquier editor de código.
  • Se recomienda declarar variables en líneas separadas, ya que se facilita la descripción de cada variable mediante comentarios.
  • Poner un espacio después de cada coma(,) facilita la legibilidad del código.
  • No uses variables cuyo nombre no posea algún significado descriptivo, una variable con nombres significativos permite al lector entender el contexto del código y permite disminuir la cantidad de documentación asociada, puesto que con un código legible y nombres significativos, el código se ve auto documentado. Por ejemplo, una variable llamada cantidad_recursos, tiene más significado que una variable llamada c.
  • Se consistente al momento de utilizar un estándar para nombres largos, puedes usar el estándar usado en C ("nombre_largo"), o bien el utilizado en Java, llamado CamelCase("nombre","VariableNombreLargo","Clase","ClaseNombreLargo").
  • Evita el código commented-out, que corresponde al código comentado para que no se ejecute/no compile, ya que la lectura del código se vuelve engorrosa.
  • Comenta cuando sea justo y necesario, usa los comentarios dentro de las funciones para describir las variables (sólo cuando su utilidad sea potencialmente dudosa) y cuando existan bloques de código difíciles de entender a primera vista; el exceso de comentarios vuelve ilegible el código.
  • Se recomienda como buena costumbre, añadir al inicio de cada función, un bloque de comentarios que expliquen el comportamiento general de la función, de modo que se pueda entender a grosso modo que es lo que hace, o se espera que haga, así se facilita la búsqueda de errores, y se evita el análisis innecesario en una gran cantidad de casos.
  • Es altamente recomendada la definición de variables locales al inicio de la implementación de cada función, como un bloque de código bien separado del bloque que contenga las instrucciones ejecutables, ésta separación puede consistir en una linea en blanco, o bien un comentario que denote la utilidad de cada bloque.
  • En caso de usar operadores binarios (por ejemplo +, -, &&, ||, entre otros) se recomienda poner espacio a los extremos de cada operador, de modo que se resalte su presencia y se facilite la lectura del código.
  • Se recomienda en algunas operaciones complejas, hacer uso de paréntesis redundantes o innecesarios que sirven para poder agrupar expresiones dentro de tales operaciones.
  • Evita la incorporación de más de una instrucción por línea. Ésto reduce notoriamente la legibilidad del código, ya que el programador habitualmente está acostumbrado a leer una instrucción por línea.
  • Si el código soporta la separación de sentencias en varias lineas, procura realizar una separación coherente, en el que cada punto de ruptura tenga sentido.
  • Si una instrucción abarca más de una linea, recuerda realizar la indentación necesaria.
  • Cuando escribas operaciones que hagan uso de muchos operadores, procura revisar que las operaciones se estén realizando en el orden que tu esperas que se realicen, muchas veces el lenguaje tiene otra forma de asimilar la precedencia, por lo que el resultado real varía con respecto al esperado, en general, se recomienda forzar la precedencia de operaciones haciendo uso de paréntesis.
  • Si el lenguaje soporta llaves({}) para la separación de bloques, es altamente recomendado usarlas, ello facilita el proceso de distinción de bloques de código en forma rápida, permitiendo identificar y reparar errores en el código con menos dificultad.
  • Si deseas evitar omitir una llave, abre y cierra el bloque de código que deseas crear, y luego introduce código dentro del bloque, con eso te aseguras la victoria.
  • Nunca olvides inicializar los contadores y sumadores.

Informacion complementaria:

Las empresas suelen mantener un manual de estilo que sirve de guía para que todos los programadores que trabajen en un proyecto sigan unas normas comunes.

Programa informático:

Un programa informático o programa de computadora es una secuencia de instrucciones, escritas para realizar una tarea específica en una computadora.1 Este dispositivo requiere programas para funcionar, por lo general, ejecutando las instrucciones del programa en un procesador central.2 El programa tiene un formato ejecutable que la computadora puede utilizar directamente para ejecutar las instrucciones. El mismo programa en su formato de código fuente legible para humanos, del cual se derivan los programas ejecutables (por ejemplo, compilados), le permite a un programador estudiar y desarrollar sus algoritmos. Una colección de programas de computadora y datos relacionados se conoce como software.

Elementos de un programa:

Variables:

En programación, una variable está formada por un espacio en el sistema de almacenaje (memoria principal de un ordenador) y un nombre simbólico (unidentificador) que está asociado a dicho espacio. Ese espacio contiene una cantidad o información conocida o desconocida, es decir un valor. El nombre de la variable es la forma usual de referirse al valor almacenado: esta separación entre nombre y contenido permite que el nombre sea usado independientemente de la información exacta que representa. El identificador, en el código fuente de la computadora puede estar ligado a un valor durante el tiempo de ejecución y el valor de la variable puede por lo tanto cambiar durante el curso de la ejecución del programa.
Nota: Todas las variables deben ser, Declaradas, Inicializadas y Utilizadas.

Operadores:

Un operador realiza una función, toma uno o más argumentos y devuelve un resultado. Es de esperar que podamos realizar operaciones aritméticas con números y lógicas con los booleanos. Estas operaciones se representan mediante operadores.
Los operadores, al igual que los métodos, se pueden sobrecargar, es decir se puede redefinir su funcionalidad dependiendo de los tipos de datos de los operandos que reciba. Así, podemos indicar que el operador (+) realice una suma aritmética si los operandos que recibe son dos enteros y una concatenación si recibe una cadena y otro objeto.

Los operadores son muy similares a los de C++, ya lo advertimos en su momento.

Operadores Aritméticos: Los habituales

  • Suma + .
  • Resta - .
  • Multiplicación * .
  • División / .
  • Resto de la División % .

Operadores de Asignación:

El principal es '=' pero hay más operadores de asignación con distintas funciones que explicamos brevemente ahora.
  • '+=' : op1 += op2 à op1 = op1 + op2
  • '-=' : op1 -= op2 à op1 = op1 - op2
  • '*=' : op1 *= op2 à op1 = op1 * op2
  • '/=' : op1 /= op2 à op1 = op1 / op2
  • '%=' : op1 %= op2 à op1 = op1 % op2

Operadores Unarios:

El mas (+) y el menos (-). Para cambiar el signo del operando.

Operador Instanceof:

Nos permite saber si un objeto pertenece a una clase o no.
  • NombreObjeto instanceof NombreClase

Operadores Incrementales:

Son los operadores que nos permiten incrementar las variables en una unidad. Se pueden usar delante y detrás de la variable dependiendo de lo que queramos, es decir, si queremos que incremente o viceversa antes de utilizar o lo contrario.
  • '++'
  • '--'

Operadores Relacionales:

Permiten comparar variables según relación de igualdad/desigualdad o relacción mayor/menor. Devuelven siempre un valor boolean.
  • '>': Mayor que
  • '<': Menor que
  • '==': Iguales
  • '!=': Distintos
  • '>=': Mayor o igual que
  • '<=': Menor o igual que

Operadores Lógicos:

Nos permiten construir expresiones lógicas.
  • '&&' : devuelve true si ambos operandos son true.
  • '||' : devuelve true si alguno de los operandos son true.
  • '!' : Niega el operando que se le pasa.
  • '&' : devuelve true si ambos operandos son true, evaluándolos ambos.
  • '|' : devuelve true uno de los operandos es true, evaluándolos ambos.

Operador de concatenación con cadena de caracteres '+':

  • Por Ejemplo: System.out.println("El total es"+ result +"unidades");

Operadores que actúan a nivel de bits:

Son mucho menos utilizados por eso los explicamos más por encima.
  • '>>': desplazamiento a la derecha de los bits del operando
  • '<<': desplazamiento a la izquierda de los bits de operando
  • '&': operador and a nivel de bit.
  • '|': operador or a nivel de bit

¿Que es JAVA?

Java es un lenguaje de programación de propósito general, concurrente, orientado a objetos que fue diseñado específicamente para tener tan pocas dependencias de implementación como fuera posible. Su intención es permitir que los desarrolladores de aplicaciones escriban el programa una vez y lo ejecuten en cualquier dispositivo (conocido en inglés como WORA, o "write once, run anywhere"), lo que quiere decir que el código que es ejecutado en una plataforma no tiene que ser recompilado para correr en otra. Java es, a partir de 2012, uno de los lenguajes de programación más populares en uso, particularmente para aplicaciones de cliente-servidor de web, con unos 10 millones de usuarios reportados.1 2
Nota: Java es un lenguaje útil para casi todo tipo de problemas. Podemos citar como funcionalidades de Java varias:
  1. Aplicaciones “cliente”: son las que se ejecutan en un solo ordenador (por ejemplo el portátil de tu casa) sin necesidad de conectarse a otra máquina. Pueden servirte por ejemplo para realizar cálculos o gestionar datos.
  2. Aplicaciones “cliente/servidor”: son programas que necesitan conectarse a otra máquina (por ejemplo un servidor de datos) para pedirle algún servicio de forma más o menos continua, como podría ser el uso de una base de datos. Pueden servir por ejemplo para el teletrabajo: trabajar desde casa pero conectados a un ordenador de una empresa.
  3. Podemos hablar también de “aplicaciones web”, que son programas Java que se ejecutan en un servidor de páginas web. Estas aplicaciones reciben “solicitudes” desde un ordenador y envían al navegador (Internet Explorer, Firefox, Safari, etc.) que actúa como su cliente páginas de respuesta en HTML.
¿CUÁL ES EL MEJOR IDE PARA JAVA?
Hemos generado nuestro primer programa Java usando las herramientas más básicas posibles: el bloc de notas y la ventana consola de DOS. Los programadores utilizan herramientas más sofisticadas ya que facilitan el trabajo enormemente. Dentro de estas herramientas podríamos hablar de entornos de desarrollo (IDEs) o frameworks.
A veces ambos términos se confunden. Nosotros nos referiremos a IDE como a un programa que nos permite desarrollar código en un lenguaje y que incorpora habitualmente:
a) Un espacio para la escritura de código con cierta ayuda interactiva para generar código y para indicar los errores de sintaxis que se cometan por parte del programador.
b) La posibilidad de compilar y ejecutar el código escrito.
c) La posibilidad de organizar los proyectos de programación.
d) Herramientas auxiliares para programadores para detección de errores o análisis de programas (debuggers).
e) Otras opciones como utilidades para pruebas, carga de librerías, etc.
Existen diversos IDEs para Java. Vamos a citar algunos de ellos:
a) Eclipse: software libre que se puede descargar en http://www.eclipse.org. Es uno de los entornos Java más utilizados a nivel profesional. El paquete básico de Eclipse se puede expandir mediante la instalación de plugins para añadir funcionalidades a medida que se vayan necesitando.
b) NetBeans: software libre que se puede descargar en http://www.netbeans.org.  Otro de los entornos Java muy utilizados, también expandible mediante plugins. Facilita bastante el diseño gráfico asociado a aplicaciones Java.
c) BlueJ: software libre que se puede descargar en http://bluej.org. Es un entorno de desarrollo dirigido al aprendizaje de Java (entorno académico) y sin uso a nivel profesional. Es utilizado en distintas universidades para la enseñanza de Java. Destaca por ser sencillo e incluir algunas funcionalidades dirigidas a que las personas que estén aprendiendo tengan mayor facilidad para comprender aspectos clave de la programación orientada a objetos.
d) JBuilder: software comercial. Se pueden obtener versiones de prueba o versiones simplificadas gratuitas en la web http://www.embarcadero.com buscando en la sección de productos y desarrollo de aplicaciones. Permite desarrollos gráficos.
e) JCreator: software comercial. Se pueden obtener versiones de prueba o versiones simplificadas gratuitas en la web http://www.jcreator.com. Este IDE está escrito en C++ y omite herramientas para desarrollos gráficos, lo cual lo hace más rápido y eficiente que otros IDEs.
f) Otros.

---------------------------------- Fin de la Clase --------------------------------------------------

Ir a la ultima actualización de la clase: http://adf.ly/1QvjE5

REVISA AQUÍ!!!!  la descripción del vídeo para mas INFORMACIÓN y HERRAMIENTAS


Sus-Cri-Be-Te a este canal. o visitalo para ver las "listas de reproducción"

https://www.youtube.com/channel/UCJ70FExIXtnRE5cPI-P03vw


Recuerda seguirme en mis redes sociales:


twitter: @cusattic

Blogger: http://cusattic-java.blogspot.com/


comenta tus dudas, dime que te pareció y ¿que temas crees debería explicar?.


Gracias por ver el vídeo...


Espero hayas encontrado y aprendido lo que buscabas...


compártelo ya que "esto es para todos!!"