Sie sind auf Seite 1von 26

Métodos Avanzados de Programación

Científica y Computación
Profesor SALVADOR COBOS GUZMAN

Tema 1 Introducción a la programación orientada a


objetos

1
Contenido del tema
Profesor de la asignatura

Tema 1 Introducción a la programación orientada a objetos


 Introducción
 Diseño de clases
 Introducción a UML para el modelado de problemas
 Introducción a la eficiencia y complejidad de un algoritmo

Tema a tratar o idea a destacar

2
Introducción

Dentro de la programación existen muchos paradigmas, estilos de


programación, que nos llevan a la resolución de problemas.

La programación habitualmente se define como un proceso que tiene


una entrada, un proceso o manipulación a través de la cual se obtiene
una salida.

Un algoritmo es una sucesión de pasos que nos llevan a la resolución de


un problema o resultado.

Para solucionar un programa vemos que no solo necesitamos una


secuencia de pasos, sino que existen elementos que interacionan entre
sí para lograr un objetivo.

Métodos Avanzados de Título


Programación Científica y -Computación
de la asignatura - Prof.
Profesor de la Salvador Cobos
asignatura 3
Introducción

Ejemplo de programación tradicional:

Supongamos que queremos simular un partido de fútbol y los diferentes


participantes deben interaccionar entre ellos.

 Crear una variable jugador que contenga su comportamiento


 ¿Cuántas variables jugador podemos definir?
 ¿Cómo se implementara la interacción entre dichos jugadores?

Suena un poco caótico el anterior procedimiento.

Para solucionar este tipo de problemas se usa la programación orientada


a objetos (POO).

Métodos Avanzados de Título


Programación Científica y -Computación
de la asignatura - Prof.
Profesor de la Salvador Cobos
asignatura 4
Introducción a POO

Definición:

La Programación Orientada a Objetos (POO) se basa en el concepto de


que los elementos que forman parte de un programa se pueden crear
como entidades que interaccionan entre ellas, que se intercambian
mensajes, para solucionar un problema.

Conceptos básicos:

 Clase: Es la base de la POO. Se puede decir que es una forma de


representar las características comunes de elementos que van a
formar parte del programa.

Métodos Avanzados de Título


Programación Científica y -Computación
de la asignatura - Prof.
Profesor de la Salvador Cobos
asignatura 5
Introducción a POO

Conceptos básicos:
 Objeto: Es la Personalización de las características definidas en una
clase con datos concretos. Cuando creamos un objeto se dice que
estamos instanciando una clase.

 Herencia: Relación entre clases que permite que una clase obtenga
de otra atributos y operaciones definidas en la clase de la cual deriva.

 Abstracción: Se trata de extraer las características comunes que


tienen varios elementos para luego poder especializarlos.

 Agregación: Relación en la que un objeto forma parte de otro mayor.

Métodos Avanzados de Título


Programación Científica y -Computación
de la asignatura - Prof.
Profesor de la Salvador Cobos
asignatura 6
Introducción a POO

Conceptos básicos:
 Persistencia: Es la propiedad de un objeto de mantenerse en el
tiempo. Ejemplo: almacenamiento en una base de datos o en un
archivo.

 Visibilidad: Capacidad por la cual un objeto o método puede ser


ocultado al resto de elementos que forman parte del código.

 Encapsulación: Se trata de organizar los datos de tal manera que no


sean manipulables por cualquiera, sino que para llegar a ellos
tengamos que trabajar con procedimientos adecuados.

 Polimorfismo: Es la capacidad por la cual un método realizará tareas


diferentes dependiendo del objeto que lo invoque.

Métodos Avanzados de Título


Programación Científica y -Computación
de la asignatura - Prof.
Profesor de la Salvador Cobos
asignatura 7
Diseño de clases

Cuando tenemos que implementar un programa basado en POO, lo más


complicado es identificar las clases involucradas.
¿Cómo podemos saber qué es una clase y qué no?

La clave para tener éxito es abstraer el problema, es decir:


Obtener de los requisitos que se muestran la información necesaria para
identificar los elementos que forman parte del mismo.

Métodos Avanzados de Título


Programación Científica y -Computación
de la asignatura - Prof.
Profesor de la Salvador Cobos
asignatura 8
Diseño de clases

Ejemplo 1: Una biblioteca ha decidido informatizar el préstamo de libros.


La biblioteca tiene libros y revistas que se pueden prestar durante un
máximo de una semana. Si el libro es de consulta, no se puede prestar,
ya que se debe utilizar únicamente dentro de la biblioteca. Los usuarios
de la biblioteca que no realicen la devolución de los préstamos en el
tiempo adecuado serán sancionados sin poder alquilar libros durante una
semana.
Número de candidatos 4:
Biblioteca, Libros, Revistas,
Usuarios.

Clase Biblioteca
Clase Libro Clase Revista
Atributos: Atributos:
- Prestado - Prestado
- Disponible - Disponible

Clase Usuario
Atributos:
- Sancionado
- No sancionado

Métodos Avanzados de Título


Programación Científica y -Computación
de la asignatura - Prof.
Profesor de la Salvador Cobos
asignatura 9
Diseño de clases

Ejemplo 2: Se quiere informatizar el proceso de gestión de los alumnos


con sus matrículas. Todos los alumnos deben estar matriculados como
mínimo en una asignatura. Las asignaturas pueden ser anuales o
cuatrimestrales. Una misma asignatura podrá ser impartida por uno o
varios profesores. Un curso se compone de varias asignaturas que
podrán ser impartidas durante un cuatrimestre o un año. Los alumnos
podrán consultar las notas de todas las asignaturas en las que estén
matriculados. Número de candidatos 4:
Alumnos, Asignaturas,
Profesores, Notas.
Clase Profesores
Clase Alumnos
Atributos: Clase Asignaturas
- Matriculado Atributos:
- No matriculado - Impartida por un profesor
- Impartida por varios
Clase Notas - Duración
Atributos:
- Cuatrimestre
- Anual

Métodos Avanzados de Título


Programación Científica y -Computación
de la asignatura - Prof.
Profesor de la Salvador Cobos
asignatura 10
Diseño de clases

Implementación de clases en Java

En Java las clases se definen como:

class Miclase {
// Definición de la clase atributos y métodos
}

Una vez que tenemos identificadas las clases debemos pasar a dotarlas
de contenido. Para ello debemos comenzar identificando los atributos de
las mismas. Los atributos nos ofrecen características de las clases y
permiten a través de sus valores componer el estado de un objeto.

Métodos Avanzados de Título


Programación Científica y -Computación
de la asignatura - Prof.
Profesor de la Salvador Cobos
asignatura 11
Diseño de clases

En Java los atributos se definen como:

[visibilidad] [tipo] nombre;

Visibilidad:
 Private: únicamente se puede ver este atributo dentro de la clase.
 Public: Se puede acceder a él desde cualquier clase del programa.
 Protected: Accesible desde la propia clase y sus subclases.
Visibilidad Class Package Subclass World
Public Si Si Si Si
Protected Si Si Si No
Private Si No No No
No declarado Si Si No No

Métodos Avanzados de Título


Programación Científica y -Computación
de la asignatura - Prof.
Profesor de la Salvador Cobos
asignatura 12
Diseño de clases
En Java se definen como:
[visibilidad] [tipo] nombre; Tipo: por tipo se refiere al tipo de variable:

Nombre Tipo Tamaño


byte Entero 1 byte

short Entero 2 bytes

int Entero 4 bytes

long Entero 8 bytes

float Decimal simple 4 bytes

double Decimal doble 8 bytes

char Carácter 2 bytes


simple
boolean Valor true or 1 byte
false
String Varios 2 bytes* no. de
caracteres caracteres

Métodos Avanzados de Título


Programación Científica y -Computación
de la asignatura - Prof.
Profesor de la Salvador Cobos
asignatura 13
Diseño de clases
Ejemplos:

Private int edad;


Public int velocidad;
Protected String nombre;

Por último, para dotar a las clases de comportamiento debemos definir


los métodos que forman parte de la misma.

Métodos Avanzados de Título


Programación Científica y -Computación
de la asignatura - Prof.
Profesor de la Salvador Cobos
asignatura 14
Diseño de clases
Constructores:
Los constructores con métodos que tienen el mismo nombre que la clase
y son invocados al instanciar la clase. El constructor puede, por ejemplo,
establecer los valores por defecto que deben tener los atributos.
Ejemplo:
public class Pelota {
//variables nativas
float radio;
float peso;
String modelo;
//constructores
public Pelota(){
this.peso =100;
this.radio =10;}
public Pelota(float radio, float peso){
this.radio=radio;
this.peso=peso;}

Métodos Avanzados de Título


Programación Científica y -Computación
de la asignatura - Prof.
Profesor de la Salvador Cobos
asignatura 15
Diseño de clases
Métodos:
Las clases pueden tener tantos métodos como queramos, pero existen
una serie de ellos que son especiales por su comportamiento.
Getters y Setters. Los getters nos permiten obtener el valor de los
atributos privados y los setters establecerlos.

Ejemplo:

//Métodos
public float getRadio() { Getter
return radio;
}
public float getPeso()
{
return peso;
}
public void setRadio(float r) { Setters
radio=r:
}

Métodos Avanzados de Título


Programación Científica y -Computación
de la asignatura - Prof.
Profesor de la Salvador Cobos
asignatura 16
Diseño de clases
Creación de objetos:
La creación de objetos se realiza a través del operador new que invoca
el constructor que se corresponda con los parámetros actuales
indicados.

Ejemplo:
class Main {
public static void main(String[ ] args) {
Pelota p;
p = new Pelota();
float x=p.getRadio();
float y=p.getPeso();
float r=p.setRadio(2.5f);
System.out.println("El radio es " +x);
System.out.println("El peso es " +y);
System.out.println("El nuevo radio es " +r);
}
}

Métodos Avanzados de Título


Programación Científica y -Computación
de la asignatura - Prof.
Profesor de la Salvador Cobos
asignatura 17
Introducción a Unified Modeling Language
(UML) para el modelado de problemas
(+) Atributo público: Accesible desde cualquier parte del código:
(#) Atributo protegido: Accesible desde la propia clase y sus subclase
(-) Atributo privado: Solo accesible desde la misma clase.
Atributo sin modificador: Se denomina de «paquete».

Métodos Avanzados de Título


Programación Científica y -Computación
de la asignatura - Prof.
Profesor de la Salvador Cobos
asignatura 18
Introducción a UML para el modelado de los
problemas
En UML una clase se identifica como cuadro con tres partes: 1) Nombre
de la clase, atributos y métodos.

Métodos Avanzados de Título


Programación Científica y -Computación
de la asignatura - Prof.
Profesor de la Salvador Cobos
asignatura 19
Introducción a la eficiencia y complejidad
De un algoritmo
La eficiencia de un algoritmo o éxito que un algoritmo debe de realizar,
no tiene que depender del potencial del hardware o del tipo de sistema
operativo en el cual se ejecuta.

Para poder comparar dos algoritmos es necesario analizar la eficiencia


en función del tiempo que consume en ejecutarse y en función del grado
de complejidad que tenga.

Comparemos los siguientes ejemplos

Métodos Avanzados de Título


Programación Científica y -Computación
de la asignatura - Prof.
Profesor de la Salvador Cobos
asignatura 20
Introducción a la eficiencia y complejidad
De un algoritmo
Método burbuja

45 50 20 35

45 20 35 50

20 35 45 50

Métodos Avanzados de Título


Programación Científica y -Computación
de la asignatura - Prof.
Profesor de la Salvador Cobos
asignatura 21
Introducción a la eficiencia y complejidad
De un algoritmo
Método QuickSort
Izquierda Derecha

45 50 20 35

35 50 20

35 20 50

35 20 45 50

20 35 45 50

35 45
Pivote Pivote

Métodos Avanzados de Título


Programación Científica y -Computación
de la asignatura - Prof.
Profesor de la Salvador Cobos
asignatura 22
Introducción a la eficiencia y complejidad
De un algoritmo
Como se puede observar, el método QuickSort tiene más líneas de
código que el método burbuja. Esto no quiere decir que el método
burbuja sea más eficiente. Haciendo un análisis de coste computacional,
comprobaremos que el último método es más eficiente y no dependerá
de las características del sistema operativo o hardware.

Tanto el método Burbuja como el método Quicksort pueden ser


comparados de tal manera que, a un determinado número de entradas,
un método consuma más tiempo que otro.

En la siguiente clase se verá como calcular la complejidad de un


algoritmo y como en función de la entrada los rendimientos pueden
variar.

Métodos Avanzados de Título


Programación Científica y -Computación
de la asignatura - Prof.
Profesor de la Salvador Cobos
asignatura 23
Entorno de Trabajo

Eclipse

Eclipse es una plataforma de desarrollo.


Fue concebida desde sus orígenes para convertirse en una plataforma
de integración de herramientas de desarrollo.
No tiene en mente un lenguaje específico, sino que es un IDE genérico.

Durante el curso vamos a usar Eclipse Neon que se puede descargar


desde la siguiente dirección web:
https://www.eclipse.org/downloads/
En el siguiente vídeo puedes ver cómo crear un proyecto en Eclipse:
https://www.youtube.com/watch?v=9t_984ElJl8

Métodos Avanzados de Título


Programación Científica y -Computación
de la asignatura - Prof.
Profesor de la Salvador Cobos
asignatura 24
Preguntas

Métodos Avanzados de Título


Programación Científica y -Computación
de la asignatura - Prof.
Profesor de la Salvador Cobos
asignatura 25
www.unir.net
26

Das könnte Ihnen auch gefallen