0% encontró este documento útil (0 votos)
96 vistas40 páginas

Programacion

El documento describe diferentes paradigmas de programación como la programación orientada a objetos, imperativa, declarativa, estructurada, funcional y reactiva. También compara la programación orientada a objetos con la programación modular y estructurada, y describe conceptos básicos de programación orientada a objetos con Java.

Cargado por

Alisson Galvez
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
96 vistas40 páginas

Programacion

El documento describe diferentes paradigmas de programación como la programación orientada a objetos, imperativa, declarativa, estructurada, funcional y reactiva. También compara la programación orientada a objetos con la programación modular y estructurada, y describe conceptos básicos de programación orientada a objetos con Java.

Cargado por

Alisson Galvez
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 40

1

UNIVERSIDAD ESTATAL DE

GUAYAQUIL FACULTAL DE

INGENIERIA INDUSTRIAL

CURSO:

SISTEMAS DE INFORMACION 2-2

PORTAFOLIO UNIDAD 1

ASIGNATURA:

PROGRAMACION ORIENTADA A OBJETOS

AUTORA

ALISSON GÁLVEZ MUÑOZ

DOCENTE:

Lcdo. Erick Guerrero Zambrano, MDS.

GUAYAQUIL-ECUADOR

2021-2022
2

¿Qué son los paradigmas de programación?

Existen muchas formas de programar, de forma estructurada, funcional, reactiva o la más


popular; la programación orientada a objetos, en este artículo veremos las diferencias entre
ellas.

La programación en pocas palabras es darle datos e instrucciones a una computadora para


que procese esos datos siguiendo las instrucciones que le dimos para que nos devuelva un
resultado. ¿Y para qué? para resolver problemas de nuestra vida. Como hacer operaciones
matemáticas, sacar estadísticas, automatizar un proceso, etc.

Pero esos problemas se pueden resolver de diferentes maneras, algunas más rápidas y
eficientes y otras no tanto, pero ambas encontrarán la solución al problema.

Esas diferentes formas de resolver el problema son los paradigmas de programación y es de


lo que hoy te voy a hablar.

¿Qué es un paradigma?

Un paradigma es equivalente a un mapa. Por ejemplo si quieres llegar de un punto "A" a un


punto "B" tendrás múltiples caminos, algunos más lentos otros más rápidos pero al final
todos te llevarán a tu destino. En el mundo de la programación los paradigmas son esos
estilos documentados para programar, cada estilo es diferente, tienen sus ventajas y
desventajas pero todos obtienen el mismo resultado.

Incluso existen lenguajes que ya adoptan un paradigma en específico, pero también otros
que adoptan más de un paradigma como JavaScript, Python y Java (si Java ).

Paradigma Imperativa Vs Declarativa

Todos los paradigmas se diferencian en dos grupos


3

Imperativa

Es aquella que nos dice lo que vamos a hacer paso por paso, como si siguiéramos la receta
para prepara nuestra comida favorita. Es decir tú en el código vas describiendo paso por
paso todo lo que hará tu programa.

Declarativa

Es una programación en la que tú le dices al programa lo que tiene que hacer, no sabes
como funciona por detrás pero el programa lo hace. Por ejemplo cuando haces la consulta
de ventas en tu tienda del mes marzo en SQL, no sabes que hizo el programa para traerte
esos datos pero los trajo, y es porque por debajo ya existen métodos y funciones que lo
hacen.

Un ejemplo muy claro es Angular que usaba directivas para hacer múltiples cosas con tan
solo escribir un atributo HTML.

Programación Estructurada

El paradigma con el que todos aprendimos a programar es el secuencial o estructurado, aquí


las instrucciones van de arriba hacia abajo, no tenemos que abstraer cosas complejas,
simplemente damos ordenes una tras otra.

Pero si te pones a pensar programar de arriba hacia abajo tiene muchos problemas. ¿Qué
pasa si hay un error en la línea 10456 que está relacionada con la línea 956? Sería un caos
resolverlo, por eso existen otros paradigmas que nos permiten mantener una programación
más organizada.

Programación Orientada a Objetos

Con la Programación Orientada a Objetos pasamos de tener un código de arriba hacia abajo
en el que las funcionalidades están mezcladas y son difíciles de separar o escalar, a una
programación en la que tenemos los elementos (Objetos) que tienen características y
funciones.
4

Por ejemplo un usuario en una red social tiene características como nombre, apellido, edad.
Y también funciones como comentar, iniciar sesión, comprar, etc.

Esta forma de programar hace más fácil manejar y mantener un sistema, si necesitáramos
una nueva funcionalidad podríamos sin problemas agregar un nuevo objeto o añadir datos y
funcionalidades a los objetos que ya existen.

Programación funcional
Este tipo de programación también divide al sistema en varios pedazos, cada pedazo
(función) hace una sola cosa como multiplicar un número, solicitar un dato, etc.

Por ejemplo si usuario inicia sesión en una web, habría una función que valide los datos,
esta retornaría un valor y se la enviaría a otra función para saber que página mostrar, luego
esta función enviara los datos a otra función para saber si el usuario tiene notificaciones,
pero cada función hace una sola cosa.

Programación Reactiva

En la programación reactiva observamos cambios en un flujo de datos, por ejemplo un chat


en vivo que recibe cientos de comentarios por segundo, o Google Maps enviándonos
nuestra ubicación en tiempo real, etc.

Entonces lo que hace la programación reactiva es observar estos flujos datos y cuando estos
cambian hacemos algo.

Con este ejemplo te quedará clarísimo. Cuando ves Netflix y la velocidad de tu internet
disminuye, Netflix no para la transmisión, la continua pero con calidad de video inferior,
eso es la programación reactiva.
5

Programación funcional

Este tipo de programación también divide al sistema en varios pedazos, cada pedazo
(función) hace una sola cosa como multiplicar un número, solicitar un dato, etc.

Por ejemplo si usuario inicia sesión en una web, habría una función que valide los datos,
esta retornaría un valor y se la enviaría a otra función para saber que página mostrar, luego
esta función enviara los datos a otra función para saber si el usuario tiene notificaciones,
pero cada función hace una sola cosa.

Programación Reactiva

En la programación reactiva observamos cambios en un flujo de datos, por ejemplo un chat


en vivo que recibe cientos de comentarios por segundo, o Google Maps enviándonos
nuestra ubicación en tiempo real, etc.

Entonces lo que hace la programación reactiva es observar estos flujos datos y cuando estos
cambian hacemos algo.

Con este ejemplo te quedará clarísimo. Cuando ves Netflix y la velocidad de tu internet
disminuye, Netflix no para la transmisión, la continua pero con calidad de video inferior,
eso es la programación reactiva.

1 Programación Orientada a Objetos vs Programación Modular


2.1
La programación Orientada a objetos (POO) es una forma especial de programar,
más cercana a como expresaríamos las cosas en la vida real que otros tipos de
programación. Con la POO tenemos que aprender a pensar las cosas de una manera distinta,
para escribir nuestros programas en términos de objetos, propiedades, métodos y otras
cosas que veremos rápidamente para aclarar conceptos y dar una pequeña base que permita
soltarnos un poco con este tipo de programación.
6

2.1.1

Reusabilidad: Cuando hemos diseñado adecuadamente las clases, se pueden usar en


distintas partes del programa y en numerosos proyectos.

2.1.2

Mantenibilidad: Debido a la sencillez para abstraer el problema, los programas


orientados a objetos son más sencillos de leer y comprender, pues nos permiten ocultar
detalles de implementación dejando visibles sólo aquellos detalles más relevantes.

2.1.3

Modificabilidad: La facilidad de añadir, suprimir o modificar nuevos objetos nos


permite hacer modificaciones de una forma muy sencilla. Fiabilidad. Al dividir el problema
en partes más pequeñas podemos probarlas de manera independiente y aislar mucho más
fácilmente los posibles errores que puedan surgir.

PROGRAMACIÓN ESTRUCTURADA

Los programas son más fáciles de entender. Un programa estructurado puede ser leído
en secuencia, de arriba hacia abajo, sin necesidad de estar saltando de un sitio a otro en la
lógica, lo cual es típico de otros estilos de programación. La estructura del programa es más
clara puesto que las instrucciones están más relacionadas entre sí, por lo que es más fácil
comprender lo que hace cada función. Reducción del esfuerzo en las pruebas. El programa
se puede tener listo para producción normal en un tiempo menor del tradicional; por otro
lado, el seguimiento de las fallas se facilita debido a la lógica más visible, de tal forma que
los errores se pueden detectar y corregir más fácilmente. Programas más sencillos y más
rápidos. Aumento de la productividad del programador. Se facilita la utilización de las otras
técnicas para el mejoramiento de la productividad en programación. Los programas quedan
mejor documentados internamente .La programación estructurada permite la escritura de
programas fáciles de leer y modificar. En un programa estructurado el flujo lógico se
gobierna por tres estructuras de control básico: secuenciales, repetitivas y selectivas.
7

Programación Orientada a Objetos Estructurada

• Encapsula datos (atributos) y métodos


• Están orientados a acciones (comportamiento) en objetos.
• La unidad de programación están relacionados entre sí. Es la función.
• La unidad de programación es la clase. Un objeto, es una abstracción de un conjunto
de cosas del mundo real. El objeto posee funcionalidades. El objeto posee
características que pueden ser usadas en forma independiente, pero juntas se
complementan

3. PROGRAMACIÓN ORIENTADA A OBJETOS CON JAVA

• Introducción a Java

● Java básico

● Objetos con Java

● Conceptos avanzados

3.1 INTRODUCCION A JAVA

Es un lenguaje de programación de propósito general, tipado, orientado a objetos,… que


permite el desarrollo desde aplicaciones básicas, pasando por aplicaciones empresariales
hasta aplicaciones móviles.

Java nacía como un lenguaje de programación que pudiese ser multiplataforma y


multidispositivo, bajo el paradigma “Write Once Run Anywhere” (WORA)

De esta forma un programa Java escrito una vez podemos ejecutarle sobre diferentes
plataformas, siendo soportados los sistemas operativos Windows, MacOs y UNIX. Y a su
vez en diferentes tipos de dispositivos.
8

3.2 Características del lenguaje Java

Dentro de las características del lenguaje Java encontramos:

Independiente de Plataforma

Cuando compilamos código fuente Java no se genera código máquina específico, si no


que se generan bytecodes, los cuales son interpretados por la Java Virtual Machine (JVM),
posibilitando que un mismo código fuente pueda ser ejecutado en múltiples plataformas.

Orientado a Objetos

Cualquier elemento del lenguaje Java es un objeto. Dentro de los objetos se encapsulan
los datos, los cuales son accedidos mediante métodos.

Sencillo

Java está enfocado para ser un lenguaje fácil de aprender. Simplemente se deberán de
entender los conceptos básicos de la programación orientada a objetos (POO).

Seguro
Es seguro ya que los programas se ejecutan dentro de la Java Virtual Machine (JVM)
en un formato de “caja de arena”, de tal manera que no pueden acceder a nada que esté
fuera de ella.

Tiene una validación sobre los bytecodes para comprobar que no hay códigos de
fragmento ilega

Arquitectura Neutral

Independientemente de que se ejecute en una arquitectura de 32bits o de 64bits. En Java


los tipos de datos siempre ocupan lo mismo.
9

Portable

Java no tiene nada que dependa de la plataforma, lo cual le hace que sea portable a
diferentes plataformas.

Robusto

El lenguaje Java intenta controlar las situaciones de error en los procesos de compilación
y de ejecución, reduciendo de esta manera el riesgo de fallo.

Además Java realiza el control total de la memoria alocándola y retirándola mediante un


garbage colletor, de tal manera que no podemos utilizar punteros para acceder a ella.

Multi-hilo

Java nos permite la programación concurrente, de tal manera que un único programa
puede abrir diferentes hilos de ejecución.

Interpretado

Los bytecodes son interpretados en tiempo real a código máquina.

Alto Rendimiento

Java ofrece compiladores Just-In-Time que permiten tener un alto rendimiento.

Distribuido

El lenguaje Java está pensando para ser ejecutado en arquitecturas distribuidas, como
pueda ser Internet.
10

Multi-hilo
Java nos permite la programación concurrente, de tal manera que un único programa
puede abrir diferentes hilos de ejecución.

Interpretado

Los bytecodes son interpretados en tiempo real a código máquina.

Alto Rendimiento

Java ofrece compiladores Just-In-Time que permiten tener un alto rendimiento.

Distribuido

El lenguaje Java está pensando para ser ejecutado en arquitecturas distribuidas, como
pueda ser Internet.

3.3 Java Development Kit

Es un software que provee herramientas de desarrollo para la creación de programas en


Java. Puede instalarse en una computadora local o en una unidad de red.

En la unidad de red se pueden tener las herramientas distribuidas en varias


computadoras y trabajar como una sola aplicación.

3.3.1 Componentes del JDK


Introducción
JDK consta de una serie de aplicaciones y componentes. Todas las opciones que los
ejecutables del JDK presentan se muestran llamando al programa sin parámetros o con las
opciones -? o -help:

Intérprete en tiempo de ejecución (JRE)

• Permite la ejecución de los programas Java (*.class) no gráficos (aplicaciones).


11

Compilador

Se utiliza para compilar archivos de código fuente Java (habitualmente *.java), en archivos
de clases Java ejecutables (*.class). Se crea un archivo de clase para cada clase definida en
un archivo fuente.

En el siguiente diagrama podemos ver la sucesión de pasos para generar un programa


final Java:

4. Herramientas del kit

El JDK le permite escribir aplicaciones que se desarrollan una sola vez y se ejecutan en
cualquier lugar de cualquier máquina virtual Java. Las aplicaciones Java desarrolladas con
el JDK en un sistema se pueden usar en otro sistema sin tener que cambiar ni recompilar el
código. Los archivos de clase Java son portables a cualquier máquina virtual Java estándar.

Para obtener más información sobre el JDK actual, consulte la versión del IBM®
Developer Kit para Java en su servidor.

Puede consultar la versión del IBM Developer Kit para Java predeterminado de la
máquina virtual Java (JVM) en el servidor, entrando uno de estos mandatos:

• java -version en el indicador de mandatos de Qshell.


• RUNJVA CLASS (*VERSION) en la línea de mandatos CL.
12

5. ENTORNOS DE DESARROLLO

¿Cuáles son los IDE más populares?

Recomendar el mejor IDE para trabajar no es tarea fácil. Cada programador tiene sus
preferencias y lo que para uno es cómodo para otro puede resultar lo contrario. Es como
hablar de coches. Algunos estarán encantados con coches de marcas Asiáticas, otros
preferirán europeas y siempre habrá quien prefiera un auto americano o ruso. Así que lo
mejor es enumerar aquellos IDE que son más populares para que los conozcas y puedas
probar aquel que mejor se ajuste a ti.

Estos son algunos de los mejores IDEs para nuestro lenguaje favorito Java:

Eclipse

Es un IDE muy popular de código abierto y ampliamente extendido. Fue desarrollador


originalmente por IBM aunque actualmente cuenta con una gran comunidad que le da soporte
con una gigantesca biblioteca de plugins. Es multiplataforma (Windows, Linux y Mac) y
dispone de nuevas versiones cada año. Con Eclipse es posible desarrollar todo tipo de
aplicaciones para web, escritorio o móviles usando Java, C, C++, JSP, perl,
Python, Ruby yPHP.

Su mayor punto fuerte reside en su asistente y capacidad para depurar errores. A medida
que vas programando Eclipse lanza recomendaciones que nos ayudan a optimizar nuestro
código hasta niveles que rozan el elegante guante blanco. Sin duda una excelente elección.

NetBeans

NetBeans es otro entorno de desarrollo integrado basado en código abierto. En lo personal


adoro este IDE porque gracias a su enfoque podemos desarrollar nuestras aplicaciones como
módulos (como un componente de un software). Lo cual resulta sumamente cómodo pues
podemos reutilizar nuestro código para diferentes proyectos las veces que queramos sin
mayor complicación. NetBeans es el IDE oficial de Java pero también podemos desarrollar
en otros lenguajes como PHP, C, C++ e incluso HTML 5.

Entre sus detractores hay quien comenta que el desarrollo de una GUI sobre NetBeans es
algo complicado y que no cuenta con la ingente cantidad de plugins y extensiones de las que
sí cuenta Eclipse, además de carecer de soporte nativo para trabajar con webapps (.war,
.jsp, y servlets).

IntelliJ Idea

Desarrollado por Jet Brains es un IDE que cuenta con dos versiones.
13

La Community Edition, libre descarga, y la versión Ultimate Edition que cuesta la friolera de
más de 500 dólares de suscripción anual, según el plan que contratemos, pero que podemos
probar gratis durante 30 días si lo que queremos es echarle un vistazo a todo lo que puede
ofrecer.

Con IntelliJ podemos programar sobre diferentes lenguajes y proporciona soporte para
trabajar con JAVA, Node JS, PHP, Python, Ruby, Sass, TypeScript, AngularJS,
CoffeeScript, CSS, HTML, JavaScript, LESS, etc.

Además ofrece integración con GIT lo que permite trabajar con diferentes versiones de
nuestro software sin afectar a la línea maestra de nuestro desarrollo.

BlueJ

Estoy seguro que has visto este IDE antes. Está presente en innumerables cantidades de
vídeos y tutoriales en Youtube. La principal razón es que en cierto momento James Gosling,
el creador de Java, dijo dijo que BlueJ era uno de sus IDE IDEs favoritos. Esto desencadenó
que de pronto en muchas escuelas y academias se usará BlueJ para dar clase pues era el IDE
del momento.

Como los IDE anteriores de esta lista, es multiplataforma. Podemos usarlo sobre
Windows, macOS y GNU/Linux y cuenta con una gran documentación que lo hace
especialmente indicado para estudiantes.

Su principal característica es que nos permite generar una vista UML de todos los objetos
que componen nuestra aplicación.

Codenvy

Codenvy es un IDE comercial de Java que está construido sobre el Eclipse Che. Como
muchas otras opciones de la competencia podemos encontrar diferentes variantes en función
del tipo de desarrollador o cliente que seamos. Entre las 3 variantes podemos elegir entre la
edición developer, enterprise y team.

Lo que hace interesante a Codenvy es que está pensado para ofrecer un espacio de trabajo
en la nube, colaborativo y bajo demanda. Esto hace que sea muy fácil moverse de una licencia
a otra y aprovechar solo aquellas características que necesitemos ahorrando costes.

Desde este IDE podemos trabajar cómodamente desde nuestro navegador y beneficiarnos
de potentes funciones como la finalización de código, la refactorización y el resaltado de
sintaxis.
14

Además de Java, Codenvy proporciona soporte para una gran cantidad de lenguajes de
programación interpretados y compilados. Esto incluye C ++, C #, JavaScript y PHP.

Xcode

Los usuarios de Mac que quieran usar un IDE completamente gratis deben probar Xcode.
Se trata de un IDE desarrollado para macOS por la propia Apple que además de permitir la
programación en Java, el IDE viene con una multitud de herramientas que nos permiten
desarrollar software para iOS, macOS, tvOS y watchOS.

Algunos de los aspectos más destacados importantes de Xcode son un depurador


incorporado, un generador de GUI y un autocompletado de perfiles. Además de Java, Xcode
proporciona soporte para AppleScript, C, C ++, Objective-C, Objective-C ++, Python, Ruby
y Swift.

jGRASP

Por último, el quinto de la lista pero no por ello el peor. Los anteriores IDE tienen un
“defecto” común. Todos devoran ingentes cantidades de memoria RAM. Si buscas algo
ligero para comenzar tu desarrollo quizá jGRASP pueda ayudarte.

Desarrollado en JAVA por el Samuel Ginn College of Engineering de la Universidad de


Auburn en su departamento de ciencias de la computación e ingeniería de software. Funciona
bien en todas las plataformas con JVM. Cuenta además con una función muy similar a la que
comentaba con BlueJ, proporcionando visualizaciones de software CSD, Diagramas de Clase
UML, así como vistas Dinámicas y vistas Canvas. Produce CSD (diagramas de estructuras
de control) para Java.

Con jGRASP podemos desarrollar además aplicaciones basadas en C, CPP, Objective- C,


Python, ADA y VHD.

4. La definición de la clase

● En Java, todo son clases

● Así que cada fichero define una clase – public class MiClase

● La clase tiene atributos y métodos

● El método main es especial – public static void main (String [] args) {...} – Es el punto de
arranque de una clase

Variables

● Almacenan el estado de los objetos


15

● Pueden definirse en cualquier parte del código, antes de su uso

● Deben empezar con letra, guión bajo (_) o dólar ($)

● Sensible a mayúsculas/minúsculas

Variables

● Dí que variables son válidas:

int

il

anInt

thing1

thing ONE-HUNDRED ONE_HUNDRED

something2do

Las variables tienen un tipo que define el rango de valores y las operaciones que pueden
hacerse – Java es fuertemente tipado

● Tipos primitivos

● Tipos referencia

Tipos de datos primitivos

● Enteros (se inicializan a 0) – Byte: un byte con signo ((byte)12) – Short: dos bytes con
signo ((short)1231) – Int: cuatros bytes con signo (1238921) – Long: ocho bytes con signo
(728478283L)

● Reales (se inicializan a 0.0) – Float: punto flotante 32 bits (1.2342F) – Double: punto
flotante 64 bits (123.131)

Tipos de datos referencia

● Objetos – Instancias de clases


16

● Arrays – Colección de elementos del mismo tipo, sean básicos o complejos

● Se inicializan a null

Inicialización

● Las variables pueden inicializarse en la definición

int a = 2;

char b = 'a';

double c = 123.13123;

Bicicleta d = new Bicicleta ();

Constantes

● Variables que no pueden cambiar de valor una vez establecido

● Modificador final

final int a;

a = 12;

final double b = 456.4546456;

Ámbito

● Ámbito: parte de programa en el que una variable está definida

● Variable miembro (de una clase)

● Parámetro (de un método)

● Variable local (de un método)

● Excepciones

Visibilidad

● Visibilidad: parte de programa en el que una variable es accesible sin ser calificada

● Las variables se pueden ocultar por otras con el mismo nombre en ámbitos más anidados
17

Operadores

● Unarios op1 operator op1

● Binarios op1 operator op2

● Ternarios op1 operator1 op2 operator2 op3

Operadores aritméticos

● Binarios – Suma: op1 + op2

– Resta: op1 – op2

– Multiplicacion: op1 * op2

– División: op1 / op2

– Módulo: op1 % op2

Operadores aritméticos

● Operaciones con enteros y reales

● El resultado depende de los operadores

– Algún double -> double

– Algún float -> float

– Algún long -> long

– Si no, int

Operadores aritméticos

● Unarios

– Número negativo (-2, -123)

– Convierte byte y short en int (+2, +65)

● Suma / resta unaria

– ++op1 – op1++

– --op1 – op1—
18

Operadores de comparación

● Devuelven booleanos

– Igualdad: op1 == op2

– Desigualdad: op1!= op2

– Mayor que: op1 > op2

– Mayor o igual que: op1 >= op2

– Menor que: op1 < op2

– Menor o igual que: op1 <= op2

Operadores de comparación

● Mucho cuidado con la igualdad

● Cuando se comparan variables referencia, se compara si ambos objetos son el mismo, no


si son iguales (tienen el mismo estado)

● Error típico

Método main

● Es un método especial

● Punto de entrada del programa

● public static void main(String args[])

● args: vector de cadenas de texto que representa los parámetros pasados al programa

Terminar la ejecución

● Un programa se para cuando no existe ningún hilo de ejecución

● También se puede terminar la aplicación con el método System.exit(int)

– El entero es el código de retorno


19

6. PROGRAMACIÓN ORIENTADA A OBJETOS CON JAVA

6.1 OBJETOS CON JAVA

● Estado y comportamiento

● Clases, atributos y métodos

● Herencia, this y super

● Interfaces

● Paquetes

● Sobrecarga

● Constructores y destructores

● Seguridad

● Casting y comparación

● Arrays y vectores

● Strings y cadenas de texto

6.2 INTRODUCCION

Java es uno de los lenguajes de programación más usados por las empresas tecnológicas.
Un perfil profesional que es altamente demandado, por lo que especializarte como
programador en Java te va a abrir muchas puertas dentro del mercado laboral.

Una de las mayores ventajas que te vas a encontrar a al ahora de especializarte en Java es
que se trata de un lenguaje de programación con una curva de aprendizaje sencilla. Esto es,
en parte, debido a que se trata de un sistema de programación orientada a objetos.

Java: programación orientada a objetos


Resulta una obviedad, pero la base de la Programación orientada a Objetos es el objeto.
Pero, ¿qué es un objeto en Java? Un objeto en Java no es ni más ni menos que lo mismo que
un objeto en el mundo real.

Los objetos en Java no tienen existencia física, no puedes tocarlos, pero sí que existe como
algo que contiene información sobre sí mismo y sobre su estado. Se puede interactuar
con él y se puede modificarlo para que responda a nuestras necesidades de programación
20

Componentes de un objeto en Java

Igual que sucede en la vida real, donde los objetos tienen una serie de características y un
comportamiento determinado; en Java, los objetos, tienen unos datos concretos y una serie
de rutinas para que se pueda operar a partir de ellos. De esta forma, nos encontramos con
dos tipos de componentes de un objeto:

• Campos o atributos. Se trata del componente de un objeto en Java que recopila y


almacena datos. Pueden ser primitivos o, a su vez, otro tipo de objetos. Lo que se
conoce como agregación o composición de objetos. La idea detrás de esta
característica es que cada atributo o campo representa una propiedad determinada
del objeto.
• Rutinas o métodos. Las rutinas llevan a cabo una serie de acciones o tareas en
función de los atributos que definan al objeto.

Características de un objeto en Java

¿Qué es un objeto en Java? Como ves, un objeto en Java es la unidad básica de este
lenguaje de programación y representa las entidades de la vida real. Un programa típico de
Java crea muchos objetos que interactúan al invocar métodos. De esta forma, podemos
decir que un objeto consiste en:

• Estado: está representado por atributos de un objeto. También refleja las


propiedades de un objeto.
• Comportamiento: se representa mediante métodos de un objeto. También refleja la
respuesta de un objeto con otros objetos.
• Identidad: le da un nombre único a un objeto y permite que un objeto interactúe con
otros objetos.

Declaración de objetos:

Ahora que hemos definido qué es un objeto en Java, tenemos que hablar de que
cuando creamos objetos, los estamos declarando. Lo primero que hacemos para
definir un objeto es crear un molde o una receta en el que vamos a especificar el
comportamiento del objeto y sus características.

Ventajas de los objetos en Java


Como hemos estado viendo, la orientación a objetos nos permite crear moldes o
plantillas de todo lo que necesitemos que funcione en nuestro código. Esto hace que
sea mucho más sencillo detectar posibles errores y corregirlos sin tener que tocar
todo el código. Además, debes tener en cuenta que, cuando operas con un objeto, en
realidad lo haces a través de una referencia (clase) que apunta a dicho objeto, no con
el objeto en sí. Es algo así como cuando utilizas un nombre para referirte a una
persona.
21

7. Variables de Instantancias y de clases

En Object-Oriented Programming (OOP), o Programación Orientada a Objetos, un


programa está hecho de clases, con sus campos y métodos

La creación de un programa involucra ensamblar objetos y hacerlos interactuar entre ellos.

Una clase describe un grupo de objetos que comparten propiedades y métodos comunes

◼ Una clase es una plantilla que define qué forma tienen los objetos de la clase

◼ Una clase se compone de:

- Información: campos (atributos, propiedades)


- Comportamiento: métodos (operaciones, funciones)

◼ Un objeto es una instancia de una clase

7.1 Mensajes y Métodos de clase

Las clases son objetos, y como todos los objetos pueden tener atributos y además les
podemos mandar mensajes. Pero las clases son objetos con responsabilidades especiales, la
más común es la de crear nuevos objetos. Cada vez que a le mando el mensaje new a una
clase obtengo una nueva instancia de esa clase. Podemos crear nuevas instancias en
cualquier momento de nuestro programa (en el workspace, dentro de un método, etc).

Entonces, los mensajes de clase son mensajes que entienden las clases, no las instancias de
las mismas. El nombre (selector) de un mensaje de clase se escribe igual que siempre
(empieza con minúscula).

7.2 ¿Cómo escribo métodos de clase?

Cada mensaje de clase debe tener asociado un método de clase (su codificación).

• En Pharo: En el segundo panel del System Browser, apretando el botón class,


escriben el método como hasta ahora. (No se olviden de volver a apretar instance
para escribir métodos de instancia)
• En el parcial: simplemente pongan (MC) al lado del método, para diferenciarlo de
los métodos de instancia.
22

¿Que son las variables de clase? ¿Para que sirven?

Las variables de clase nos sirven cuando queremos que nuestros objetos tengan alguna
referencia a algún valor, que sea el mismo para todas las instancias de esa clase, y que
además pueda cambiar (por eso usamos una variable y no hardcodeamos ese valor en el
código del programa, asumiendo que es posible).

8. VARIABLES DE INSTANCIA, BUCLES – CONDICIONES

8..1.1 Variable de instancia

En programación orientada a objetos, una variable de instancia o miembro de dato es


una variable que se relaciona con una única instancia de una clase.
Cada vez que se crea un objeto, el sistema crea una copia de todas las variables que
están vinculadas con dicha clase, haciéndolas propias de esa instancia. Solamente se puede
acceder a ellas a través del identificador del objeto.
Estas variables son declaradas fuera del cuerpo de los métodos y dentro de la clase, por
lo tanto son de tipo global. Por ende, pueden ser utilizadas por cualquier método no estático
de dicha clase.
El lenguaje Java permite a los desarrolladores crear aplicaciones usando modelado
orientado a objetos. En una aplicación orientada a objetos, las tareas son llevadas a cabo
por un grupo de estos últimos. Dichos objetos tienen un comportamiento y propiedades, los
cuales se definen dentro de las declaraciones de clase. Cuando los programadores escriben
estas declaraciones, pueden utilizar variables de instancia para modelar elementos de datos
que sean accesibles a través de la clase. Cada objeto de una clase tiene su propia copia de
las variables de instancia en la declaración de la clase.
23

8.1.2

BUCLES

Nos referimos a estructuras de repetición o bucles en alusión a instrucciones que


permiten la repetición de procesos un número n de veces. Los bucles se pueden
materializar con distintas instrucciones como for, while, etc. Un bucle se puede
anidar dentro de otro dando lugar a que por cada repetición del proceso exterior se
ejecute n veces el proceso interior.

BUCLE FOR

La construcción de bucle básico en el lenguaje Java es la sentencia for, que le


permite iterar un rango de valores para determinar cuántas veces ejecutar un bucle.

BUCLE WHILE

Estos bucles se utilizan cuando queremos repetir la ejecución de unas sentencias


un número indefinido de veces, siempre que se cumpla una condición. Es más
sencillo de comprender que el bucle FOR, pues no incorpora en la misma línea la
inicialización de las variables su condición para seguir ejecutándose y su
actualización.

BUCLE DO_WHILE

El bucle do...while es la última de las estructuras para implementar repeticiones


de las que dispone en Javascript y es una variación del bucle while visto
anteriormente.
24

8.2. EXPRESIONES

Las expresiones, además de un valor, tienen un tipo asociado, que depende de las
sobrexpresiones dentro de la expresión.
Una expresión se puede conjuntar con otras para formar una expresión mayor mediante el
uso de operadores

Las expresiones se pueden emplear en:

– Asignaciones.

– Invocaciones a métodos.

– Operandos.

Terminar la ejecución

● Un programa se para cuando no existe ningún hilo de ejecución

● También se puede terminar la aplicación con el método System.exit(int)

– El entero es el código de retorno


25

9. PARADIGMAS

• Lenguajes
• Traductores e intérpretes
• Métodos de diseño de programas
• Surgimiento de los paradigmas
• Clasificación de los paradigmas
Procedimentales
Declarativos
• Principales paradigmas

9.1 LENGUAJES

Los lenguajes contienen un conjunto variado de comandos, instrucciones, reglas, formas


de organizar los datos y otros elementos, que permiten codificar programas con los que se
indican las tareas que la máquina debe realizar para procesar un conjunto de información
determinado y resolver un problema.
La sintaxis de un lenguaje tiene que ver con la forma de los programas, es decir, con
cómo deben escribirse las expresiones, los comandos, las declaraciones, y todo el código del
programa para que sea entendible sin ambigüedades.
La semántica de un lenguaje se relaciona con el significado de los programas, con cómo
deben comportarse cuando son ejecutados en una computadora.

9.2 TRADUCTORES E INTÉRPRETES

Los traductores convierten el programa fuente a una versión equivalente en lenguaje de


máquina y dejan “armada” esta versión (programa objeto) para que el computador la ejecute
cuantas veces sea necesario sin que el traductor vuelva a intervenir.
Los intérpretes, a diferencia de los traductores, ejecutan las instrucciones del programa
fuente, interpretando cada vez las sentencias del programa. Va traduciendo y ejecutando cada
vez que el programa lo requiere, y no almacena programa objeto alguno. Lo que se almacena
es el interprete que reside en memoria, el programa fuente, tablas de símbolos y datos
necesarios para la ejecución del programa.

9.3 METODOS DISEÑOS DE PROGRAMA


Una técnica de diseño y desarrollo de sistemas común es la modularización, que consiste en
descomponer el sistema en módulos, que provocan un ocultamiento de la información. Cada módulo
esconde información, tiene su funcionalidad y sus correspondientes estructuras de datos.
Los módulos proporcionan formas de interactuar e intercambiar información según los lenguajes.
Hay dos grandes tendencias para orientar los diseños que son BOTTON – UP (ir de lo particular
a lo general) o TOP – DOWN (de lo más general, ir descomponiendo hacia abajo, a lo más particular).
26

9.4 SURGIMIENTO DE PARADIGMAS

El paradigma orientado a objetos (OO) define los programas en términos de comunidades


de objetos. Los objetos con características comunes se agrupan en clases (un concepto similar
al de tipo abstracto de dato (TAD)). Los objetos son entidades que combinan un estado (es
decir, datos) y un comportamiento (esto es, procedimientos o métodos). Estos objetos se
comunican entre ellos para realizar tareas. Es en este modo de ver un programa donde este
paradigma difiere del paradigma imperativo o estructurado, en los que los datos y los métodos
están separados y sin relación. El paradigma OO surge para solventar los problemas que
planteaban otros paradigmas, como el imperativo, con el objeto de elaborar programas y
módulos más fáciles de escribir, mantener y reutilizar. Entre los lenguajes que soportan el
paradigma OO están Smalltalk, C++, Delphi (Object Pascal), Java y C#.

9.5 CLASIFICACION DE PARADIGMAS

9.5.1 PROCEDIMENTAL:

Este paradigma de programación consiste en basarse en un número muy bajo de


expresiones repetidas, englobarlas todas en un procedimiento o función y llamarlo cada vez
que tenga que ejecutarse.

9.5.2 DECLARATIVO

Este paradigma no necesita definir algoritmos, puesto que describe el problema en lugar
de encontrar una solución al mismo. Este paradigma utiliza el principio del razonamiento
lógico para responder a las preguntas o cuestiones consultadas.

Este paradigma a su vez se divide en dos:

– Programación Lógica: Prolog

– Programación funcional: Lisp, Scala, Java, Kotlin.

9.6 PRINCIPALES PARADIGMAS

• Imperativo
• Objetos Paradigmas declarativos:
• Funcional
• Lógico

Otros paradigmas:
• Heurístico
• Concurrente
27

9.7 Abstracción de Datos

9.7.1 Datos y valores

Un tipo de dato representa un conjunto de valores que significan lo mismo, un atributo el


cual representa la clase de datos que se está utilizando, sin embargo hay algunos tipos que no
representan valores en la aplicación que se ejecutan.

Cuando se utilizan tipos entre los objetos estos no pueden intercambiarse, bueno o al
menos no totalmente ya que pueden lograrse intercambiar de formas muy limitadas.

La manera de comprobar los tipos se agrupan en 3 clases: estático, dinámico y estricto,


este último suele tratarse como un tipo estático.

9.7.2 TIPOS DE DATOS

9.7.3 CLASIFICACIÓN DE LOS TIPOS DE DATOS

Tipo Estático

Los datos de tipo estático son expresados en tiempo de compilación con esto se dice que mediante
un análisis de compilación puede determinarse el tipo de dato.

El tipo estricto

Todas las expresiones son consistentes en tiempo de compilación, es decir asegura que no se asigne
accidentalmente un tipo de valor incorrecto a una variable, por esta razón es que suele tratarse como
un tipo de datos estático. El tipo de dato estricto también se encarga de que no se accedan a
propiedades o métodos que no pertenezcan al tipo de objeto.

Tipo Dinámico

En este tipo de dato las comprobaciones se realizan en tiempo real es decir en tiempo de ejecución.

Esto permite que una variable tome valores de tipos diferentes en diferentes momentos. Los
lenguajes que podemos mencionar que utilizan este tipado están Python y PHP.

9.7.4 TIPOS DE DATOS SIMPLES

Tipos de datos simples Un tipo de dato simple es aquél cuyos valores son atómicos, es
decir, que no pueden ser descompuestos en otros valores, por lo que también es denominado
como tipo de dato “atómico”.
28

9.7.5 TIPOS DE DATOS COMPUESTOS

Tipos de datos compuestos Un tipo compuesto es un tipo de dato cuyos valores


están compuestos por otros valores, de manera que conforma una estructura de datos.
Cada uno de los valores que forman el tipo de dato compuesto corresponde a algún
tipo de dato que puede ser tanto simple como compuesto. Su utilidad consiste en que
se pueden procesar en su conjunto como una unidad o se pueden descomponer en sus
partes y tratarlas en forma independiente.

9.7.6 TIPOS DE DATOS RECURSIVOS

Tipos de datos recursivos Entre los tipos de datos compuestos merecen una
especial distinción los denominados tipos recursivos.

9.7.7 SISTEMAS DE TIPOS

Según la necesidad o predominancia que tenga un lenguaje sobre la definición de


los tipos de datos que utiliza, se los clasifica en “fuertemente” o “débilmente” tipados.

9.7.8 TRANSPARENCIA REFERENCIAL Y EFECTO DE LADO

Los lenguajes con efecto de lado utilizan un modelo en el que las variables están
estrechamente relacionadas con direcciones de la memoria del computador, y actúan
modificando repetidamente la representación de sus datos, mediante asignaciones
destructivas. De esta manera, el valor de una expresión puede depender de otros
factores, como expresiones evaluadas anteriormente que modifican las posiciones de
memoria, las evaluaciones previas de la misma expresión, los valores de otras
variables no explicitadas en la invocación, etc.

10. ABSTRACCIÓN DE CONTROL

• Enlace

- Enlace estático

- Enlace dinámico

• Ámbito y entorno

• Pasaje de Parámetros

- Por copia

- Por referencia

• Mecanismos de evaluación

- Evaluación ansiosa
29

- Clase 1
30

Clase 2
31

Clase 3,4 y 5
32

Clase 6
33

Clase 7
34

Clase 8
35

Clase 9
36

GLOSARIO

Polimorfismo: Se refiere a la propiedad por la que es posible enviar mensajes

sintácticamente iguales a objetos de tipos distintos.

Bloque: Un bloque es un conjunto de cero o más sentencias

agrupadas entre llaves

Sentencias: Es una unidad completa de ejecución y termina en punto y coma

Visibilidad: Parte de programa en el que una variable es accesible sin ser

calificada

Atributos: Son los datos que caracterizan a los objetos de una clase y

determinan el estado de un objeto

Paradigma: Es hacer referencia en caso de algo que se toma como “modelo"

Modularidad: El uso de la encapsulación permite el desarrollo modular

de nuestra aplicación

Ocultación: El acceso al estado del objeto está regulado por los métodos,

que aseguran que el estado del objeto es consistente


37

Aporte personal de la Unidad 1

Este tipo de programación contiene una identidad, una clasificación, un


polimorfismo y una herencia para caracterizar un lenguaje orientado a objetos, estos
términos podrían utilizarse de un modo independiente uno de otro, pero juntos
complementan una relación sinérgica. Son muchos los beneficios que se pueden
obtener de la programación orientada a objetos de los que podemos ver a simple vista.
Está basado en varias técnicas, incluyendo herencia, abstracción, polimorfismo y
encapsulamiento.

Las propiedades o atributos son las características de los objetos. Cuando


definimos una propiedad normalmente especificamos su nombre y su tipo. Nos
podemos hacer a la idea de que las propiedades son algo así como variables donde
almacenamos datos relacionados con los objetos.

También existen mecanismos como la herencia y el polimorfismo que son unas


de las posibilidades más potentes de este paradigma de la programación.

La herencia sirve para crear objetos que incorporen propiedades y métodos


de otros objetos. Así podremos construir unos objetos a partir de otros sin tener
que reescribirlo todo. Puedes encontrar en DesarrolloWeb.com un artículo
completo dedicado a la Herencia.

El polimorfismo sirve para que no tengamos que preocuparnos sobre lo que


estamos trabajando, y abstraernos para definir un código que sea compatible con
objetos de varios tipos.
38

Bibliografía

tecnologiapreu.wordpress.com/2017/08/14/programacion-orientada-a-objetos-vs-
programacion- estructurada/.

javautodidacta.es.

www.tokioschool.com/noticias/que-es-objeto-en-java-aprende-programar-

java/. tokioschool.com/noticias/que-es-objeto-en-java-aprende-programar-

java/. wiki.uqbar.org/wiki/articles/variables-y-metodos-de-clase.html.

techlandia.com/son-variables-instancia-java-info_197306/.

profile.es/blog/que-son-los-paradigmas-de-programacion/. wikipedia.

en.wikipedia.org/wiki/Java_Development_Kit.

Aguilar, L. J., & Martínez, I. Z. (s.f.). Programación orientada a objetivos Madrid:

MCGRAW- HILL/INTERAMERICANA DE ESPAÑA, S. A. U.

Joyanes Aguilar Luis(1998), Programación Orientada a Objetos, 1ra.

Edición, McGraw Hill.

Pappas Chris H, Murray William H(2002), Visual C++ .NET Manual de Referencia. Mc Graw Hill

Stroustrup. Bjarne (2003). El Lenguaje de Programación C++. Edición Especial; Addison Wesley;

Wu, C. Thomas (2001). Introducción a la Programación Orientada a Objetos con Java. Mc Graw

Hill/Interamericana de España. Aravaca. Madrid.


39

GUTIERREZ, Francisco, programación Orientada a Objetos con Java, Editorial Thompson, 2007.

ECKEL, Bruce, Piensa en Java, México, editorial Pearson- Prentice Hall,, 2007, Cuarta Edición.

SCHILDT, Fundamentos de Java, México, Mac Graw Hill, 2007, Tercera Edición.

CARRETERO, Jesús, Problemas resueltos de Programación en Lenguaje Java, Editorial

Thompson, 2006.

CAHOON James, Programación en java 5.0, México, Mac graw Hill, 2006, primera edición.

SANCHEZ, programación en java 2 serie Schaum, México, Mac graw Hill, 2005, Primera

edición.
40

También podría gustarte