Você está na página 1de 39

REPÚBLICA BOLIVARIANA DE VENEZUELA

MINISTERIO DEL PODER POPULAR PARA LA DEFENSA


UNIVERSIDAD NACIONAL EXPERIMENTAL POLITÉCNICA DE LA
FUERZA ARMADA NACIONAL NÚCLEO YARACUY EXTENSIÓN
BRUZUAL

LENGUAJES DE PROGRAMACIÓN
ORIENTADA A OBJETOS

PARTICIPANTE:

REIMAR SILVA CI:24798690

BRUZUAL. ABRIL DE 2019


LENGUAJES DE PROGRAMACIÓN ORIENTADA A OBJETOS

En 1985, E. Stroustrup extendió el lenguaje de programación C a C++,


es decir C con conceptos de clases y objetos, también por esas fechas se
creo desde sus bases el lenguaje EIFFEL. En 1995 apareció el más reciente
lenguaje OO, Java desarrollado por SUN, que hereda conceptos de C++. El
lenguaje de desarrollo más extendido para aplicaciones Web, el PHP 5, trae
todas las características necesarias para desarrollar software orientado a
objetos. Además de otros lenguajes que fueron evolucionando, como el
Pascal a Delphi. Finalmente también otros lenguajes script como el
ActionScript que si bien no es totalmente orientado a objetos pero sí posee
las características.

Los lenguajes de programación orientados a objetos tratan a los


programas como conjuntos de objetos que se ayudan entre ellos para
realizar acciones. Entendiendo como objeto al entidades que contienen
datos. Permitiendo que los programas sean más fáciles de escribir, mantener
y reutilizar.

Los objetos tienen toda la información (atributos) que los diferencia de


otros pertenecientes a otra clase. Por medio de unos métodos se comunican
los objetos de una misma o diferente clase produciendo el cambio de estado
de los objetos. Esto hace que a los objetos se les trate como unidades
indivisibles en las que no se separan la información ni los métodos usados
en su tratamiento.

Los lenguajes de programación orientados a objetos tienen su origen en


un lenguaje que fue diseñado por los profesores Ole-Johan Dahl y Kristen
Nygaard en Noruega. Este lenguaje de programación orientado a objetos fue
el “Simula 67” que fue un lenguaje creado para hacer simulaciones de
naves.
Los lenguajes de programación orientadas a objetos son lenguajes
dinámicos en los que estos objetos se pueden crear y modificar sobre la
marcha. Esta programación orientada a objetos (POO) tomo auge a
mediados de los años ochenta debido a la propagación de las interfaces
gráficas de usuarios, para lo que los lenguajes de programación orientados a
objetos están especialmente dotados.

Los principales lenguajes de programación orientados a objetos son:

Ada, C++, C#, VB.NET, Clarion, Delphi, Eiffel, Java, Lexico (en
castellano), Objective-C, Ocaml, Oz, PHP, PowerBuilder, Python, Ruby y
Smalltalk.

No todos estos lenguajes de programación orientados a objetos son


específicamente orientados a objetos. Sino que algunos de ellos se le han
añadido extensiones orientadas a objetos.

Un nuevo paso en los lenguajes de programación es la Programación


orientada a aspectos (POA). Actualmente esta en fase de desarrollo, pero
cada vez atrae a más investigadores y empresas de todo el mundo

¿Qué es la POO?

La POO es una metodología de diseño de software y un paradigma de


programación que define los programas en términos de "clases de objetos",
objetos que son entidades que combinan estado (datos) y comportamiento
(procedimientos o métodos). La POO expresa un programa como un
conjunto de estos objetos, que se comunican entre ellos para realizar tareas.
Esto difiere de los lenguajes procedimentales tradicionales, en los que los
datos y los procedimientos están separados y sin relación. Estos métodos
están pensados para hacer los programas y módulos más fáciles de escribir,
mantener y reutilizar.
El modelo Orientado a objetos

Para entender este modelo vamos a revisar 4 conceptos básicos:

 objetos

 clases

 Herencia

 Envío de mensajes

1. Objetos

Entender que es un objeto es la clave para entender cualquier lenguaje


orientado a objetos.

Existen muchas definiciones que se le ha dado al objeto. Primero


empecemos entendiendo que es un objeto del mundo real. Un objeto del
mundo real es cualquier cosa que vemos a nuestro alrededor. Digamos que
para leer este artículo lo hacemos a través del monitor y una computadora,
ambos son objetos, al igual que nuestro teléfono celular, un árbol o un
automóvil.

Analicemos un poco más a un objeto del mundo real, como la


computadora. No necesitamos ser expertos en hardware para saber que una
computadora está compuesta internamente por varios componentes: la
tarjeta madre, el chip del procesador, un disco duro, una tarjeta de video, y
otras partes más. El trabajo en conjunto de todos estos componentes hace
operar a una computadora.

Internamente, cada uno de estos componentes puede ser sumamente


complicado y puede ser fabricado por diversas compañías con
diversos métodos de diseño. Pero nosotros no necesitamos saber cómo
trabajan cada uno de estos componentes, como saber que hace cada uno de
los chips de la tarjeta madre, o cómo funciona internamente el procesador.
Cada componente es una unidad autónoma, y todo lo que necesitamos saber
de adentro es cómo interactúan entre sí los componentes, saber por
ejemplo si el procesador y las memorias son compatibles con la tarjeta
madre, o conocer donde se coloca la tarjeta de video. Cuando conocemos
como interaccionan los componentes entre sí, podremos armar fácilmente
una computadora.

¿Que tiene que ver esto con la programación? La programacion


orientada a objetostrabaja de esta manera. Todo el programa está
construido en base a diferentes componentes (objetos), cada uno tiene un
rol específico en el programa y todos los componentes pueden comunicarse
entre ellos de formas predefinidas. Todo objeto del mundo real tiene 2
componentes: características y comportamiento.

Por ejemplo, los automóviles tienen características (marca, modelo, color,


velocidad máxima, etc.) y comportamiento (frenar, acelerar, retroceder, llenar
combustible, cambiar llantas, etc.).

Los objetos de Software, al igual que los objetos del mundo real,
también tienen características y comportamientos. Un objeto de software
mantiene sus características en una o más "variables", e implementa su
comportamiento con "métodos". Un método es una función o subrutina
asociada a un objeto.
Para redondear estas ideas, imaginemos que tenemos estacionado en
nuestra cochera un Ford Focus color azul que corre hasta 260 km/h. Si
pasamos ese objeto del mundo real al mundo del software, tendremos
un objeto Automóvil con sus características predeterminadas:

Marca = Ford
Modelo = Focus
Color = Azul
Velocidad Máxima = 260 km/h

Cuando a las características del objeto le ponemos valores decimos que


el objeto tiene estados. Las variables almacenan los estados de un
objeto en un determinado momento.

Definición teórica: Un objeto es una unidad de código compuesto


de variables y métodos relacionados.

2. Las clases

En el mundo real, normalmente tenemos muchos objetos del


mismo tipo. Por ejemplo, nuestro teléfono celular es sólo uno de los miles
que hay en el mundo. Si hablamos en términos de la programación
orientada a objetos, podemos decir que nuestro objeto celular es una
instancia de una clase conocida como "celular". Los celulares
tienen características (marca, modelo, sistema operativo, pantalla, teclado,
etc.) y comportamientos (hacer y recibir llamadas, enviar mensajes
multimedia, transmisión de datos, etc.).

Cuando se fabrican los celulares, los fabricantes aprovechan el hecho de


que los celulares comparten esas características comunes y construyen
modelos o plantillas comunes, para que a partir de esas se puedan crear
muchos equipos celulares del mismo modelo. A ese modelo o plantilla le
llamamos clase, y a los equipos que sacamos a partir de ella la
llamamos objetos.

Esto mismo se aplica a los objetos de software, se puede tener


muchos objetos del mismo tipo y mismas características.

Definición teórica: La clase es un modelo o prototipo que define


las variables y métodos comunes a todos los objetos de cierta clase.
También se puede decir que una clase es una plantilla genérica para un
conjunto de objetos de similares características.

Por otro lado, una instancia de una clase es otra forma de llamar a
un objeto. En realidad no existe diferencia entre un objeto y una instancia.
Sólo que el objeto es un término más general, pero los objetos y
las instancias son ambas representación de una clase.

Definición Teórica: Una instancia es un objeto de una clase en particular.

3. Herencia

La herencia es uno de los conceptos más cruciales en


la POO (programación orientada a objetos). La herencia básicamente
consiste en que una clase puede heredar sus variables y métodos a
varias subclases (la clase que hereda es llamada superclase o clase
padre). Esto significa que una subclase, aparte de los atributos y métodos
propios, tiene incorporados los atributos y métodos heredadosde
la superclase. De esta manera se crea una jerarquía de herencia.

Por ejemplo, imaginemos que estamos haciendo el análisis de un


Sistema para una tienda que vende y repara equipos celulares.
En el gráfico vemos 2 clases más que posiblemente necesitemos para
crear nuestro Sistema. Esas 2 clases nuevas se construirán a partir de
la clase Celular existente. De esa forma utilizamos el comportamiento de
la Superclase.

En general, podemos tener una gran jerarquía de clases tal y como


vemos en el siguiente gráfico:

4. Envío de Mensajes

Un objeto es inútil si está aislado. El medio empleado para que


un objeto interactúe con otro son los mensajes. Hablando en términos un
poco más técnicos, los mensajes son invocaciones a los métodos de
los objetos.

Características de la POO

Existe un acuerdo acerca de qué características contempla la


"orientación a objetos", las características siguientes son las más
importantes:
Abstracción

Denota las características esenciales de un objeto, donde se capturan


sus comportamientos. Cada objeto en el sistema sirve como modelo de un
"agente" abstracto que puede realizar trabajo, informar y cambiar su estado,
y "comunicarse" con otros objetos en el sistema sin revelar cómo se
implementan estas características. Los procesos, las funciones o los
métodos pueden también ser abstraídos y cuando lo están, una variedad de
técnicas son requeridas para ampliar una abstracción. El proceso de
abstracción permite seleccionar las características relevantes dentro de un
conjunto e identificar comportamientos comunes para definir nuevos tipos de
entidades en el mundo real. La abstracción es clave en el proceso de análisis
y diseño orientado a objetos, ya que mediante ella podemos llegar a armar
un conjunto de clases que permitan modelar la realidad o el problema que se
quiere atacar.

Encapsulamiento

Significa reunir a todos los elementos que pueden considerarse


pertenecientes a una misma entidad, al mismo nivel de abstracción. Esto
permite aumentar la cohesión de los componentes del sistema. Algunos
autores confunden este concepto con el principio de ocultación,
principalmente porque se suelen emplear conjuntamente.

Principio de ocultación

Cada objeto está aislado del exterior, es un módulo natural, y cada tipo
de objeto expone una interfaz a otros objetos que especifica cómo pueden
interactuar con los objetos de la clase. El aislamiento protege a las
propiedades de un objeto contra su modificación por quien no tenga derecho
a acceder a ellas, solamente los propios métodos internos del objeto pueden
acceder a su estado. Esto asegura que otros objetos no pueden cambiar el
estado interno de un objeto de maneras inesperadas, eliminando efectos
secundarios e interacciones inesperadas. Algunos lenguajes relajan esto,
permitiendo un acceso directo a los datos internos del objeto de una manera
controlada y limitando el grado de abstracción. La aplicación entera se
reduce a un agregado o rompecabezas de objetos.

Polimorfismo

Comportamientos diferentes, asociados a objetos distintos, pueden


compartir el mismo nombre, al llamarlos por ese nombre se utilizará el
comportamiento correspondiente al objeto que se esté usando. O dicho de
otro modo, las referencias y las colecciones de objetos pueden contener
objetos de diferentes tipos, y la invocación de un comportamiento en una
referencia producirá el comportamiento correcto para el tipo real del objeto
referenciado. Cuando esto ocurre en "tiempo de ejecución", esta última
característica se llama asignación tardía o asignación dinámica. Algunos
lenguajes proporcionan medios más estáticos (en "tiempo de compilación")
de polimorfismo, tales como las plantillas y la sobrecarga de operadores
de C++.

Herencia

Las clases no están aisladas, sino que se relacionan entre sí, formando
una jerarquía de clasificación. Los objetos heredan las propiedades y el
comportamiento de todas las clases a las que pertenecen. La herencia
organiza y facilita el polimorfismo y el encapsulamiento permitiendo a los
objetos ser definidos y creados como tipos especializados de objetos
preexistentes. Estos pueden compartir (y extender) su comportamiento sin
tener que volver a implementarlo. Esto suele hacerse habitualmente
agrupando los objetos en clases y estas en árboles o enrejados que reflejan
un comportamiento común. Cuando un objeto hereda de más de una clase
se dice que hay herencia múltiple.
Recolección de basura

La recolección de basura o garbage collector es la técnica por la cual el


entorno de objetos se encarga de destruir automáticamente, y por tanto
desvincular la memoria asociada, los objetos que hayan quedado sin ninguna
referencia a ellos. Esto significa que el programador no debe preocuparse
por la asignación o liberación de memoria, ya que el entorno la asignará al
crear un nuevo objeto y la liberará cuando nadie lo esté usando. En la
mayoría de los lenguajes híbridos que se extendieron para soportar el
Paradigma de Programación Orientada a Objetos como C++ u Object Pascal,
esta característica no existe y la memoria debe desasignarse manualmente.

Entre los lenguajes orientados a objetos se destacan los siguientes:


 ABAP
 ABL Lenguaje de programación de OpenEdge de Progress
Software

 ActionScript

 ActionScript 3

 Ada

 C++

 C#

 Clarion

 Clipper (lenguaje de programación) (Versión 5.x con librería de


objetos Class(y))

 D

 Object Pascal (Delphi)

 Gambas

 Harbour

 Eiffel

 Java

 JavaScript (la herencia se realiza por medio de la programación


basada en prototipos)

 Lexico (en castellano)

 Objective-C

 Ocaml
 Oz

 R

 Perl (soporta herencia múltiple. La resolución se realiza en


preorden, pero puede modificarse al algoritmo linearization C3 por medio
del módulo Class::C3 en CPAN)

 PHP (a partir de su versión 5)

 PowerBuilder

 Python

 Ruby

 Smalltalk (Proyecto investigativo. Influenció a Java.)

 Magik (SmallWorld)

 Vala

 Visual BASIC.NET

 Visual FoxPro (en su versión 6)

 Visual Basic 6.0

 Visual Objects

 XBase++

 Lenguaje DRP

 Lenguaje de programación Scala (lenguaje usado por Twitter).


Muchos de estos lenguajes de programación no son puramente
orientados a objetos, sino que son híbridos que combinan la POO con otros
paradigmas.

Al igual que C++ otros lenguajes, como OOCOBOL, OOLISP,


OOPROLOG y Object REXX, han sido creados añadiendo extensiones
orientadas a objetos a un lenguaje de programación clásico.

Un nuevo paso en la abstracción de paradigmas de programación es la


Programación Orientada a Aspectos (POA). Aunque es todavía una
metodología en estado de maduración, cada vez atrae a más investigadores
e incluso proyectos comerciales en todo el mundo.

Programación en Java/Programación Orientada a Objetos

Un objeto es una abstracción de cualquier cosa que puedas pensar o ver


en este instante, un perro, una silla, una pelota, un misil teledirigido, un
enemigo en un videojuego, etc, etc.
Java es un lenguaje orientado a objetos. Esto quiere decir que si lo
puedes pensar, entonces es muy probable que lo puedas programar.
Retomando el ejemplo del perro, podemos hacer notar algunos detalles que
nos ayudaran a entender ese misterioso mundo de "los objetos":

1.Los perros son animales.


2.Los perros pertenecen a una raza (aunque en algunos casos
mezcla de ellas :D).
3.Los perros ladran (aunque en algunos su ladrido no se
escuche).
4.Los perros comen.
5.Los perros toman agua.
6.Los perros corren.
7.Los perros duermen.
8.Algunos perros tienen pulgas.
9.Algunos perros tienen dueño.
10. Algunos perros tienen nombre.

Bueno, vamos a dejar tranquilos a los perritos hasta aquí, y ahora explicar el
por qué enumerar estas características de nuestros amigos caninos.
En primer lugar podemos darnos cuenta que "el objeto perro" tiene
características (1, 2), puede realizar acciones (3, 4, 5, 6, 7) y tiene cierto tipo
de relación con otros objetos (8, 9, 10).
No olviden que todo perro es distinto, es decir, aunque compartan
características, no todos pertenecerían a la misma raza, o al mismo dueño, o
no vivirían en el mismo lugar, etc.
Es aquí cuando surge algo llamado "Clase". Todos los perros del mundo,
pertenecerían a la "Clase Perro". Y cada uno de los perros seria en si un
"Objeto Perro", que pertenece a la "Clase Perro".
Ahora profundizando un poco mas en estos términos. Cuando uno
programa con Java, lo que principalmente hace es crear clases, de las
cuales se crean objetos. Un código de ejemplo para entender esto seria:

class Perro{
String nombre;
String raza;
boolean pulgas;
}
Perro perrito1=new Perro();
Perro perrito2=new Perro();
Conceptos básicos de la programación orientada a objetos

Todos los objetos son ejemplares o instancias de una clase.

Java

Alumno alu1 = new Alumno(“Juan Perez”, “ejemplo”);


Alumno alu2 = new Alumno(“Abel Garcia”, “ejemplo”);
Alumno alu3 = new Alumno(“Jose Lopez”, “nada”);

Java – clases

En cada clase se define la estructura y el comportamiento que tendrán


los objetos
El encabezado consta como mínimo, de la visibilidad de la clase
Pública (public)
Privada (private)
Protegida (protected)
La estructura de los objetos de la clase se define declarando sus
atributos como datos de cualquiera de los tipos definidos por el lenguaje
Las variables utilizadas para definir los atributos en una clase se conocen
como variables de instancia.

Java – datos

Los datos que intervienen en la solución de un problema pueden ser


Datos de algún tipo definido por Java,
Objetos de clases definidas en Java (paquetes)
Definidas por el lenguaje
Definidas por otros programadores
Objetos de clases definidas por el mismo programador
En Java es preciso asignar un identificador a cada elemento que se
defina: clase, atributo, método, objeto, dato, etc.

Java – palabras reservadas


abstract
else
interface
static
boolean
extends
long
super
break
false
main
switch
byte
final
native
synchronized
case
finally
new
this
catch
float
null
throw
char
for
package
throws
class
if
private
true
continue
implements
protected
try
default
import
public
void
do
instanceof
return
volatile
double
int
short
while

Java – tipos de datos primitivos


Los tipos de datos definidos en Java y denominados primitivos son:
Tipo
Descripción
Literales (ejemplos)
byte
Entero de 8 bits
8, 25
short
Entero de 16 bits
567
int
Entero de 32 bits
-78654
long
Entero de 64 bits
L
float
Real en 32 bits con 7 dígitos en la parte decimal
47.5F
double
Real en 64 bits con 15 dígitos en la parte decimal
3456e-3
char
Carácter en 16-bits (unicode)
‘a’, ‘\’’,’\n’,’\u03A6’ (π)
boolean
Booleano
true y false

Java – referencia a objetos

Además de los datos de tipo primitivo, en Java se tiene a los objetos


como el tipo de datos más importante.
Para poder manipular a los objetos se tiene a las referencias.
Una referencia contiene una dirección en memoria, donde se encuentra
el objeto con el que se quiere trabajar.
En este tipo de datos sólo hay una literal, null

Java - declaración Ejemplos de declaración de variables

int edad, peso;


double salario, altura;
double altura = 0.48;
Ejemplos de declaración de constantes
final int IVA = 16;

Java – expresiones

Los datos de tipo primitivo no son objetos, por lo tanto no existen


métodos asociados a ellos, la única forma de trabajar con estos datos es
mediante los operadores.
Un operador y sus operandos constituyen una expresión
La expresión puede ser
aritmética
lógica
asignación
Los operandos pueden ser
literales
constantes
variables
resultado de llamadas a métodos

Java - operadores Operador aritmético Descripción + Suma - Resta *


Multiplicación
/
División
%
Residuo de la división
Operador
unario
Descripción
+
Mas unario
-
Menos unario
++
Autoincremento
--
Autodecremento
Operador de relación
Descripción
<
Menor que
<=
Menor o igual que
==
Igual que
>=
Mayor o igual que
>
Mayor que
!=
Diferente de
Operador
para cadenas
Descripción
+
Concatenación

Java - operadores Operador lógico Descripción && Conjunción ||

Disyunción
!
Negación
&&
true
false
||
true
false
!
false
true

Operador

Descripción
Asoc
() [] .
Paréntesis y punto
I
Incremento y decremento (post)
++ --
Incremento y decremento (pre)
D!
Negación
-+
Menos y más unarios
new
Operador para crear objetos
(tipo)
Conversión explícita de tipo
*/%
Multiplicación, división, residuo
+-
Suma, resta
instanceof <, <=, >, >=
Operadores de relación
== !=
Operadores de igualdad
&&
Conjunción
||
Disyunción
?:
Operador condicional
= op =
Asignación
Precedencia de operadores de mayor a menor

Java – conversión de tipos


En las expresiones que involucran operandos de diferente tipo y estas no
son compatibles se pueden convertir implícita o explícitamente al tipo de dato
que necesitamos.
La conversión implícita ocurre al tener una asignación de un dato con
tipo de menor prioridad a otro con mayor prioridad
Las prioridades de menor a mayor son:
byte
char
short
int
long
float
double

Java – conversión de tipos


La conversión explícita se utiliza cuando la implícita no es factible. Esta
se indica con el tipo de resultado deseado entre paréntesis antes del nombre
de la variable.
Ejemplo de la implícita:
Al tener una expresión que incluya datos de tipo entero y datos de tipo
real, el resultado será un número real.
Ejemplo de explícita:
long largo = L;
int entero = (int) largo; //trunca a un valor de 32 bits

ANEXOS

Você também pode gostar