1. Programación Orientada a Objetos
Alberto Blumberg
Daniel Fernández
Javier Oshiro
Guillermo Ranucci
I.F.T.S. 4 D.E. 7 - Sistemas – 2015
Paradigmas de Programación
2. ¿Qué es un objeto?
Los objetos son entidades que tienen ciertas características y
propiedades:
Estado: datos e información asignada al objeto.
Comportamiento: operaciones que puede realizar.
Identidad: propiedad que lo diferencia del resto.
3. Origen
1967 en Noruega. Lenguaje Simula 67. Estaba diseñado para
realizar simulaciones de naves.
1970+, Small Talk de Xerox (1er lenguaje puro OO)
1980, Stroustrup de AT&T Labs amplía el lenguaje C a C++
agregándole soporte a la programación orientada a objetos
convirtiéndolo en el estilo dominante
1996 surge JAVA como extensión de C++ con la idea de
aprovechar el software ya existente, utilizándolo para otros
usos diferentes a los originales sin modificar el código.
4. Conceptos Clase
Definición de las propiedades y
comportamiento de un tipo de objeto
Herencia
Las clases heredan los atributos y operaciones
de otra, se usan los mismos métodos y
variables públicas de la primera.
Objeto
Instancia de una clase, con sus
propiedades y métodos
Método
Proceso asociado a un objeto. Función que se
usa como variables locales de las propiedades
del objeto
Mensaje
Comunicación entre los objetos. Consisten en
una dirección, método y parámetros
Evento
Suceso en el sistema. Reacción a un
mensaje del objeto. Emisor-Receptor
Estado Interno
Variable privada, no visible para el
programador que crea la clase. Sólo alterable
por un método del mismo objeto
5. Características
Abstracción Capturar el comportamiento y los atributos
Encapsulamiento Aislar al objeto. Proporciona seguridad
Ocultamiento
Previene cambios en la implementación del objeto.
De esta forma otros programas que usaban este
mismo objeto no sufren alteraciones
Modularidad
Separar la aplicación en módulos o partes
independientes de la aplicación y de otros
módulos
Polimorfismo
Permite que un método pueda ser utilizado tanto
por la clase a la que pertenece como por las clases
que heredan el comportamiento
Herencia
Permite crear objetos especializados de objetos ya
existentes, compartiendo el comportamiento. Es la
transmisión de código entre las diferentes clases
Jerarquización Es el orden o clasificación de los objetos.
Puede ser por composición o por clasificación
Asociación
Relación de asociación entre clases.
Puede ser por composición o por uso.
Recolección de
Basura
Se encarga de liberar de la memoria los
objetos que quedan sin referencia
6. EJEMPLOS
class rectángulo {
private:
int base;
int altura;
public:
rectángulo(int b, int h) {
base =b;
altura=h;
}
float calcularArea() {
return base*altura;
}
}
9. class rectángulo {
private:
int base;
int altura;
public:
rectángulo(int b, int h)
{
base =b;
altura=h;
}
float calcularArea() {
return
base*altura;
}
}
Completando el ejemplo anterior con algunos nuevos
conceptos, definimos la clase figura con un método.
class figura {
public:
float calcularArea();
}
Defino la clase rectángulo que hereda de figura.
class rectángulo : public figura {
private:
float base;
float altura;
public:
rectángulo(float b, float h) {
base = b;
altura=h;
}
float calcularArea() {
return base*altura;
}
}
Defino la clase círculo que hereda de figura.
class círculo : public figura {
private:
float radio;
public:
círculo(float r) {
radio=r;
}
float calcularArea() {
return radio^2*3.14;
}
}
11. ¿Qué es UML?
(Unified Modeling Language)
Es el lenguaje de modelado de sistemas más conocido y
utilizado en la actualidad. Es importante remarcar que UML es
un "lenguaje de modelado" para especificar o para describir
métodos o procesos.
Se utiliza para definir un sistema, para detallar los artefactos en
el sistema y para documentar y construir.
12. En el primer cuadro anotamos el
nombre de la clase (si es abstracta se
escribe en cursiva, o bien se usa un
estereotipo <<abstract>> arriba del
nombre de la clase).
En la segunda parte van los atributos (o
variables de instancia, las variables de
clase van en subrayado).
En el último cuadro escribimos las
operaciones (qué mensajes que puede
entender). Lo importante no es
documentar todos los mensajes de un
objeto, sino sólo los más relevantes.
13. Impacto del P.O.O.
Reusabilidad de código: Hasta el momento para poder
reutilizar código se tenía que usar el 100% del mismo lo que
complicaba el programa y dificultaba su mantenimiento.
Fiabilidad y mantenimiento del código: al tener librerías de
clases y habiendo asegurado que esas clases tienen verificado
su funcionamiento garantiza la fiabilidad, lo que hace que una
rutina este compuesta por unas pocas líneas de código.
14. Ventajas / Desventajas
Datos separados del Diseño.
Reutilización del código.
Entendimiento del programa en el
mundo real.
Fácil entendimiento de la lógica del
programa.
Código simple.
Fácil documentación y diseño del
programa.
Dinamismo en el manejo de los datos.
Facilidad en el mantenimiento y
expansión.
Complejidad para adaptarse.
Mayor cantidad de código (aunque a
la larga no, por la reutilización).
No todos los programas pueden ser
modelados con exactitud por el
modelo de objetos.
Los objetos a menudo requieren una
extensa documentación.
Ventajas Desventajas
15. Algunos lenguajes orientados a obj.
ABAP1
ABL2
ActionScript
ActionScript 3
Ada
C++
C Sharp (C#)
Clarion
Object Pascal (Emb. Delphi)
Gambas
GObject
Genie
Harbour
Eiffel
Fortran 90/95
Java
JavaScript4
Lexico5
Objective-C
Ocaml
Oz
R
Pauscal (en español)
Perl6 7
PHP8
PowerBuilder
Python
Ruby
Self
Smalltalk9
Magik (SmallWorld)
Vala
VB.NET
Visual FoxPro10
Visual Basic 6.0
Visual DataFlex
Visual Objects
XBase++
DRP
Scala11 12
16. C++ / Arduino
Arduino nació en el Instituto Italiano de Diseño Interactivo
Ivrea en el año 2005, una escuela donde los estudiantes
sumaban sus experimentos en la interacción con dispositivos,
muchos de ellos basados en microcontroladores. .
¿Qué es Arduino? es una herramienta para hacer que los
ordenadores puedan sentir y controlar el mundo físico a través
de un ordenador personal. Es una plataforma de desarrollo de
computación física (physical computing) de código abierto,
basada en una placa con un sencillo microcontrolador y un
entorno de desarrollo para crear software (programas) para la
placa.
17. Se puede usar Arduino para
Crear objetos interactivos
Lectura de sensores
Estado de interruptores
Controles de iluminación
Control de motores DC
Motores paso a paso
Se puede ejecutar en forma
autónoma
Se puede comunicar con otro
software VisualStudio
Es de código abierto
Se puede descargar en forma
gratuita
Es legal utilizarlo en cualquier
proyecto no comercial