Paradigma de Programación Orientado a Objetos

20
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

Transcript of Paradigma de Programación Orientado a Objetos

Page 1: Paradigma de Programación Orientado a Objetos

Programación Orientada a Objetos

Alberto Blumberg

Daniel Fernández

Javier Oshiro

Guillermo RanucciI.F.T.S. 4 D.E. 7 - Sistemas – 2015

Paradigmas de Programación

Page 2: Paradigma de Programación Orientado a Objetos

¿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.

Page 3: Paradigma de Programación Orientado a Objetos

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.

Page 4: Paradigma de Programación Orientado a Objetos

Co

nce

pto

sClase

Definición de las propiedades y comportamiento de un tipo de objeto

HerenciaLas clases heredan los atributos y operaciones

de otra, se usan los mismos métodos y variables públicas de la primera.

ObjetoInstancia de una clase, con sus

propiedades y métodos

MétodoProceso asociado a un objeto. Función que se usa como variables locales de las propiedades

del objeto

MensajeComunicación entre los objetos. Consisten en

una dirección, método y parámetros

EventoSuceso en el sistema. Reacción a un

mensaje del objeto. Emisor-Receptor

Estado InternoVariable privada, no visible para el

programador que crea la clase. Sólo alterable por un método del mismo objeto

Page 5: Paradigma de Programación Orientado a Objetos

Car

acte

ríst

icas

Abstracción Capturar el comportamiento y los atributos

Encapsulamiento Aislar al objeto. Proporciona seguridad

OcultamientoPreviene cambios en la implementación del objeto.

De esta forma otros programas que usaban este mismo objeto no sufren alteraciones

ModularidadSeparar la aplicación en módulos o partes independientes de la aplicación y de otros

módulos

PolimorfismoPermite que un método pueda ser utilizado tanto

por la clase a la que pertenece como por las clases que heredan el comportamiento

HerenciaPermite 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ónRelació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

Page 6: Paradigma de Programación Orientado a Objetos

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;}

}

Page 7: Paradigma de Programación Orientado a Objetos

EJEMPLOS

Page 8: Paradigma de Programación Orientado a Objetos

EJEMPLOS

Page 9: Paradigma de Programación Orientado a Objetos

class rectángulo {private:

int base;int altura;

public:rectángulo(int b, int h)

{base =b;altura=h;

}float calcularArea() {

returnbase*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;}

}

Page 10: Paradigma de Programación Orientado a Objetos

Tipos de Clases

Publica (+)

Privada (-)

Protegida (#)

Page 11: Paradigma de Programación Orientado a Objetos

¿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.

Page 12: Paradigma de Programación Orientado a Objetos

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.

Page 13: Paradigma de Programación Orientado a Objetos

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.

Page 14: Paradigma de Programación Orientado a Objetos

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

Page 15: Paradigma de Programación Orientado a Objetos

Algunos lenguajes orientados a obj.

ABAP1ABL2ActionScriptActionScript 3AdaC++C Sharp (C#)ClarionObject Pascal (Emb. Delphi)GambasGObjectGenieHarbourEiffelFortran 90/95Java

JavaScript4Lexico5Objective-COcamlOzRPauscal (en español)Perl6 7PHP8PowerBuilderPythonRubySelfSmalltalk9Magik (SmallWorld)Vala

VB.NETVisual FoxPro10Visual Basic 6.0Visual DataFlexVisual ObjectsXBase++DRPScala11 12

Page 16: Paradigma de Programación Orientado a Objetos

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.

Page 17: Paradigma de Programación Orientado a Objetos

Se puede usar Arduino para

Crear objetos interactivosLectura de sensoresEstado de interruptoresControles de iluminaciónControl de motores DCMotores paso a paso

Se puede ejecutar en forma autónomaSe puede comunicar con otro software VisualStudio

Es de código abierto Se puede descargar en forma gratuitaEs legal utilizarlo en cualquier proyecto no comercial

Page 18: Paradigma de Programación Orientado a Objetos

Funciones SETUP y LOOP

void setup ( ) {

// única ejecución }

void loop ( ) {

// ejecución eterna }

Page 19: Paradigma de Programación Orientado a Objetos

Importar Librería

#include <SD.h>

void setup ( ) {

// única ejecución }

void loop ( ) {

// ejecución eterna }

Page 20: Paradigma de Programación Orientado a Objetos

¡GRACIAS!

Alberto Blumberg

Daniel Fernández

Javier Oshiro

Guillermo Ranucci