Docsity
Docsity

Prepara tus exámenes
Prepara tus exámenes

Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity


Consigue puntos base para descargar
Consigue puntos base para descargar

Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium


Orientación Universidad
Orientación Universidad


Programación orientada a objetos, Apuntes de Ingeniería Infórmatica

Asignatura: Programación Orientada a Objetos, Profesor: , Carrera: Ingeniería Informática + Administración y Dirección de Empresas, Universidad: URJC

Tipo: Apuntes

2013/2014

Subido el 13/07/2014

petiua
petiua 🇪🇸

3.9

(30)

10 documentos

1 / 7

Toggle sidebar

Esta página no es visible en la vista previa

¡No te pierdas las partes importantes!

bg1
1
M. Martínez, URJC, 2004
Programación orientada a objetos
PROGRAMACIÓN
ORIENTADA A OBJETOS
2
M. Martínez, URJC, 2004
Programación orientada a objetos
1.- Introducción
3
M. Martínez, URJC, 2004
Programación orientada a objetos
POO
Trabajo en equipo
Empaquetar los datos con sus operaciones
Separar la interfaz de la
implementación
.
Mantenimiento y
reutilización
Problemas:
Mucho código para los casos particulares.
Entremezclado con los casos generales.
La extensión implica modificación de lo
existente.
Soluciones:
Herencia: distinguir lo que es general de lo que
es particular.
Polimorfismo
: Detectar automáticamente a qué
categoria
particular pertenece un objeto.
4
M. Martínez, URJC, 2004
Programación orientada a objetos
Principios de la
POO
ENCAPSULACIÓN
Se agrupan los datos y las operaciones
que actúan sobre ellos.
Se oculta al exterior los detalles de los
datos y las operaciones.
HERENCIA
Los objetos pertenecen a una clase.
Para definir lo que es general se define
una clase (clase base).
Para definir lo que es particular, se
definen clases derivadas (subclases) que
heredan las características generales de la
clase base y añaden las características
particulares.
pf3
pf4
pf5

Vista previa parcial del texto

¡Descarga Programación orientada a objetos y más Apuntes en PDF de Ingeniería Infórmatica solo en Docsity!

Programación orientada a objetos (^1) M. Martínez, URJC, 2004

PROGRAMACIÓN

ORIENTADA A OBJETOS

Programación orientada a objetos (^2) M. Martínez, URJC, 2004

1.- Introducción

Ventajas de la POO

  • Trabajo en equipo
    • Empaquetar los datos con sus operaciones
    • Separar la interfaz de la implementación.
  • Mantenimiento y reutilización
    • Problemas:
      • Mucho código para los casos particulares.
      • Entremezclado con los casos generales.
      • La extensión implica modificación de lo existente.
    • Soluciones:
      • Herencia: distinguir lo que es general de lo que es particular.
      • Polimorfismo: Detectar automáticamente a qué categoria particular pertenece un objeto.

Principios de la POO

• ENCAPSULACIÓN

  • Se agrupan los datos y las operaciones que actúan sobre ellos.
  • Se oculta al exterior los detalles de los datos y las operaciones.
  • HERENCIA
  • Los objetos pertenecen a una clase.
  • Para definir lo que es general se define una clase (clase base).
  • Para definir lo que es particular, se definen clases derivadas (subclases) que heredan las características generales de la clase base y añaden las características particulares.

Programación orientada a objetos (^5) M. Martínez, URJC, 2004

• POLIMORFISMO

  • Una variable puede contener objetos de distintas clases.
  • Una operación con la misma interfaz puede corresponder a operaciones distintas, según la clase del objeto. a Hereda: a, b Añade: c Hereda: a Añade: b Programación orientada a objetos (^6) M. Martínez, URJC, 2004

2.- Definición de clases y

objetos. Encapsulación.

¿Qué es una clase?

  • CLASE = Tipo compuesto definido por el programador. - Contiene información ( datos o variables de instancia ) - Contiene funciones y procedimientos para usar esa información. ( operaciones o métodos ). - Se llaman en general miembros de la clase.
  • Un objeto es una variable de ese tipo ( instancia de la clase ).

Definición de una clase en

Delphi (Object Pascal)

  • La sintaxis es muy parecida a la de definición de un tipo registro, pero: - Se utiliza la palabra CLASS en lugar de RECORD. - Los elementos pueden ser subprogramas, representados por su cabecera. TYPE nombre_clase = CLASS <dato_i>: Tipo_dato; .... <subprograma_j>; ..... END;

Programación orientada a objetos (^13) M. Martínez, URJC, 2004

Clases y unidades

  • Es habitual, y una buena práctica de programación, que una clase y sus operaciones se definan en una unidad separada. - La declaración de la clase se pone en la parte de interfaz. - La implementación de las operaciones se pone en la parte de implementación.
  • A veces se meten varias clases en una unidad. Programación orientada a objetos (^14) M. Martínez, URJC, 2004

Ejemplo

UNIT Aeroplan; INTERFACE TYPE TAeroplano = CLASS Velocidad: integer; Altitud: integer; PROCEDURE Inicializa(vel_ini, alt_ini: integer); PROCEDURE Acelera; PROCEDURE Frena; PROCEDURE Asciende; PROCEDURE Desciende; FUNCTION AnguloDeAscension: real; END; {declaración de TAeroplano} IMPLEMENTATION PROCEDURE TAeroplano.Inicializa; BEGIN Velocidad := vel_ini; Altitud := alt_ini; END; ... END.

Crear objetos

  • Se define una variable que tiene como tipo la clase del objeto. VAR A: TAeroplano;
  • Modelo de referencia de objetos: La variable no contiene el objeto en sí, sino una referencia al objeto.
  • NO es necesario usar la flecha (A^.Velocidad)
  • Pero hay que tenerlo en cuenta en algunas circunstancias: - Los objetos deben crearse y destruirse explícitamente. - La asignación supone una copia de punteros. - El objeto no se crea por el hecho de declarar la variable, hay que crearlo (“ instanciar” el objeto) mediante una sentencia: variable := nombre_clase.Create; Ejemplo: A := TAeroplano.Create; - Al terminar de utilizar el objeto, hay que destruirlo, con una sentencia: variable.Free; Ejemplo: A.Free; - No se debe usar un objeto antes de crearlo, ni después de destruirlo.

Programación orientada a objetos (^17) M. Martínez, URJC, 2004

Usar objetos

  • Para acceder a los datos, se escribe el nombre del objeto, un punto y el nombre del dato. writeln(‘La velocidad es’, A.Velocidad);
  • Para invocar los métodos, se escribe el nombre del objeto, un punto y la llamada : A.Inicializa(80, 0); A.Acelera; A.Frena; P := A.AnguloDeAscension; R := Y * A.AnguloDeAscension; Programación orientada a objetos (^18) M. Martínez, URJC, 2004
  • Se puede aplicar la sentencia WITH a un objeto: WITH A DO BEGIN Inicializa(80, 0); Acelera; Asciende; END;
  • Se puede asignar un objeto a otro de la misma clase. VAR A, B: TAeroplano; ... B := A; Sustituye un objeto por el otro ( no es una copia dato a dato). No destruye el objeto que contenía anteriormente B.

Ocultación de información

  • En una declaración de clase, se pueden definir cuatro tipos de secciones, según el grado de visibilidad al exterior: nombre_clase = CLASS PUBLIC <datos y métodos publicos> PUBLISHED <datos y métodos publicados> PRIVATE <datos y métodos privados> PROTECTED <datos y métodos protegidos> END; - PUBLIC indica que los datos y métodos son accesibles. La sección pública forma la interfaz de la clase. - PUBLISHED indica que son públicos, y además accesibles para el editor gráfico de Delphi (Se usa sólo en objetos gráficos) Es el acceso por defecto. - PRIVATE indica que los datos y métodos de esa sección sólo son accesibles para los métodos de la propia clase.

Programación orientada a objetos (^25) M. Martínez, URJC, 2004

Ejemplo 1: TPunto

TYPE TPunto = CLASS PUBLIC PROCEDURE Inicializa; PROCEDURE CambiaX(n_x: real); PROCEDURE CambiaY(n_y: real); FUNCTION ObtenX: real; FUNCTION ObtenY: real; FUNCTION MismaAbscisa(P: TPunto): boolean; PRIVATE x, y: real; END; {TPunto} ... FUNCTION TPunto.MismaAbscisa(P: TPunto): boolean; BEGIN IF Self.x = P.x THEN MismaAbscisa := True ELSE MismaAbscisa := False; END; Programación orientada a objetos (^26) M. Martínez, URJC, 2004

Ejemplo 2: Unidad Complejos

(I)

UNIT Complejos; INTERFACE TYPE TComplejo = CLASS PRIVATE preal, pimag: real; PUBLIC PROCEDURE Inic(n_real, n_imag: real); PROCEDURE Suma(op1, op2: TComplejo); PROCEDURE Resta(op1, op2: TComplejo); PROCEDURE Escribe; END; IMPLEMENTATION PROCEDURE TComplejo.Inic(n_real, n_imag: real); BEGIN preal := n_real; pimag := n_imag; END;

Ejemplo 2: Unidad Complejos

(y II)

PROCEDURE TComplejo.Suma (op1, op2: TComplejo); BEGIN preal := op1.preal + op2.preal; pimag := op1.pimag + op2.pimag; END; PROCEDURE TComplejo.Resta (op1, op2: TComplejo); BEGIN preal := op1.preal - op2.preal; pimag := op1.pimag - op2.pimag; END; PROCEDURE TComplejo.Escribe; BEGIN writeln('preal= ',preal, 'pimag = ',pimag); END; END.

Ejemplo 2: Programa Principal

PROGRAM PComplejo; USES Complejos; VAR c1, c2, c3: TComplejo; i: integer; BEGIN c1 := TComplejo.Create; c1.Inic(0.0,0.0); c2 := TComplejo.Create; c2.Inic(1.0, 2.0); c3 := TComplejo.Create; c3.Inic(2.0, 3.0); c1.Suma(c2, c3); c1.Escribe; c1.Free; c2.Free; c3.Free; END.