2. 2
PROGRAMACIÓN ORIENTADA A OBJETOS.
OBJETIVO GENERAL DE LA MATERIA:
Diseñar e implementar objetos de programación que permiten resolver situaciones reales y de
ingenierías.
Unidad 1Introduccion al paradigma de la programación orientada a objetos.
1.1Elementos del modelo de objetos, clases, abstracción, modularidad, encapsulamiento,
herencia, polimorfismo.
1.2Lenguaje de modelado unificado, diagrama de clases.
Unidad 2 Clases y objetos
2.1 Declaración de clases: atributos, métodos, encapsulamiento.
2.2 Instanciación de una clase.
2.3 Referencia al objeto actual.
2.4 Métodos: Declaración, mensajes, paso de parámetros, retorno de valores.
2.5 Constructores y destructores: declaración uso y aplicación.
2.6 Sobrecarga de métodos.
2.7 Sobrecarga de operadores, concepto y utilidad, operadores unarios y binarios.
Unidad 3 Herencia
3.1 Definición; clase base, clase final.
3.2 Clasificación; herencia simple y herencia múltiple.
3.3 Reutilización de miembros heredados.
3.4 Referencia al objeto de la clase base.
3.5 Constructores y destructores en clases derivadas.
3.6 La definición de métodos en clases derivadas.
Unidad 4 Polimorfismo
4.1 Definición.
4.2 Clases abstractas; definición, métodos abstractos, implementación de clases abstractas y
modelado.
4.3 Interfaces: Definición, implementación de interfaces, herencia de interfaces.
4.4 Variables polimórficas (plantillas); definición uso y aplicación.
4.5 Reutilización de código.
3. 3
Unidad 5 Excepciones
5.1 Definición.
5.2 Tipos de excepciones.
5.3 Propagación de excepciones.
5.4 Gestión de excepciones; manejo y lanzamiento.
Unidad 6 Flujos y archivos
6.1 Definición.
6.2 Clasificación; archivos de texto y binarios.
6.3 Operaciones básicas y tipos de accesos.
6.4 Manejo de objetos.
Fuentes de información
“Programación orientada a objetos”
Luis Joyanes Aguilar. Mc Graw Hill
“Java 2 Fundamentos de programación”
Francisco Javier Ceballos. Editorial Alfa Omega.
“Como programar en Java”.
Deitel & Deitel. Prentice Hall.
“Programación en Java”
Herbert Schih. Prentice Hall.
Evaluación
Examen 50% teórico 50% practico.
Asistencia obligatoria
Participación
Tareas
Practicas
*Para derecho a examen tener 95 % de asistencia, tener puntos en participación, tareas y
prácticas.
4. 4
PROGRAMACIÓN ORIENTADA A OBJETOS
1.1Elementos del modelo de objetos, clases, abstracción, modularidad, encapsulamiento, herencia,
polimorfismo.
Clase: Una clase es una plantilla utilizada para construir o definir un objeto.
Atributos: Características propias del objeto.
Métodos de acceso para un atributo: public
private
protected
Métodos: Conjunto de acciones que realiza o responde el objeto.
Objeto: Es la instanciación de una clase, todos los objetos son de una clase particular.
Abstracción: Captar características esenciales de un objeto omitiendo características secundarias.
Modularidad: Consiste en subdividir el problema en partes pequeñas para facilitar su programa y
su mantenimiento.
Encapsulamiento: Aquella propiedad que permite ver a un objeto como una caja negra en la que
se ha dado toda la información relacionada con dicho objeto. Esto nos permite manipular los
objetos como unidades básicas permaneciendo junta su estructura interna.
Herencia: Es una propiedad en la que podemos heredar métodos y atributos de otra clase, de esta
forma se garantiza la reutilización de código.
*Accesos
+ public: Se heredan métodos y atributos de otros paquetes y clases del mismo paquete.
# protected: Se pueden heredar clases del mismo paquete y no de otros paquetes.
_ private: Se elimina la posibilidad de la herencia.
Estos accesos definen la visibilidad de los datos.
5. 5
Polimorfismo: Esta característica permite implementar múltiples formas de un mismo método,
dependiendo cada una de ellas de la clase sobre la que se realice la implementación. Se puede
acceder a una variedad de métodos distintos, todos con el mismo nombre pero con distintos tipos
y formas de argumento.
Ejemplo de polimorfismo:
6. 6
1.2Lenguaje de modelado unificado, diagrama de clases.
El lenguaje UML (Lenguaje de modelo unificado)
Es un lenguaje gráfico utilizado para representar la relación entre objetos, así como casos de uso,
asociación, agregación… de todo sistema, pero no muestra la lógica algorítmica de la solución del
sistema.
Uno de los temas importantes del UML es la clase.
< nombre de la clase>
<atributos>
<métodos u operación>
Ejemplo: Clase cuenta
Operaciones
-Depositar
-Girar
-Balance
Atributos:
(+): El atributo es accesible desde todos lados (public).
(-): El atributo es accesible solo para los métodos de la clase ( private ).
(#): No es accesible desde fuera de la clase, pero si por métodos de la clase que se deriven de ella.
(protected).
Cuenta: int
Cuenta balance: int
+ depositar ( monto: int ): void
+girar (monto: int):boolean
+balance (): int
Características validas que dan significado a cada dato.
No debe usar símbolos especiales ( %,+,-,*,ñ,á,etc).
Los métodos pueden ser simples (void) o parame
trizados. Los nombres no pueden ser palabras
reservadas o con símbolos especiales.
7. 7
Métodos:
public: El método es accesible desde todos lados .
private: Solo son accesibles desde dentro de la clase.
protected: El método no será accesible desde fuera de la clase, pero si por métodos de la clase y
otros métodos que se deriven.
8. 8
Unidad 2 Clases y objetos
Arreglo: Conjunto homogéneo, finito y ordenado que comparten un mismo nombre.
(lista o vector)
Int lista [10]
0 1 2 3 4 5 6 7 8 9
*Implementar una lista de 20 elementos
9. 9
*Listas
*Arreglos paralelos
Problema: Se tiene una lista de 10 alumnos con sus respectivos datos.
-clave
-nombre
-materia
-promedio
Realizar un programa para imprimir el porcentaje de alumnos de programación1, estructura de
datos y lenguajes 2.
Clave Nombre Materia Promedio
Son un conjunto de arreglos verticales cada uno con un tipo de datos que comparten una longitud.
0
1
.
.
.
n
0
1
.
.
.
n
0
1
.
.
.
n
0
1
.
.
.
n
Clave Nombre Materia promedio
13. 13
*El método this es usado en programación orientada a objetos para referencia los atributos del
objeto y hacerlos distintos de un método.
2.4 Métodos
Simples void: Estos trabajan en datos globales
Parametrizados: Son los que devuelven y reciben valores
public int// tipo valor de salida// método (int x, int y, int z) // parámetros de entrada
return;
Ejemplo:
public tipo metodo (arg1,arg2,arg3...)
{
return tipo;
}
Realizar un programa para leer un número <= 12 e imprimir
su factorial
14. 14
Métodos que devuelven y reciben valores.
Realizar un programa para calcular la depreciación de un bien utilizando la línea recta, el cual
consiste en dividir el valor del bien entre el número de años, el valor resultante es lo que
devolverá dicho bien al año. El programa mostrara una tabla como la siguiente.
Año Capital inicial Deposito Capital final
1 10 000 1000 9 000
2 9 000 1000 8 000
3 8 000 1000 7 000
16. 16
2.5 Destructores en java
Los destructores son métodos que se llaman automáticamente por el compilador cuando un
programa termina. A diferencia de c, c++, java no tiene un destructor explicito, ya que en lugar de
la función delete () de c, se usa System.cb (), biene Collection .
backage, ( Recolector de Basura).
El método cb () de system es innecesario ya que java al perder la referencia a un objeto es
eliminado automáticamente de la memoria.
Sobrecarga de operadores... investigar si existe......
17. 17
2.6 Sobrecarga de métodos
Consiste en colocar múltiples métodos con el mismo nombre pero con distintos parámetros.Es una
forma de diseñar métodos que simulen el polimorfismo.
Diseñar un programa para calcular el área de cualquier figura. Antes de realizar el cálculo el
programa mostrara con letras grandes el nombre de la figura.
19. 19
Una empresa x dedicada a la compraventa de productos básicos desea un programa para
imprimir los datos de venta de 3 productos básicos :
maíz
frijol
arroz
El programa debe imprimir lo siguiente:
a) tabla de venta anual de los tres productos
b) que producto se vendió mas en el año
c) imprimir todos los totales de ventas mensuales y por productos.
MAIZ FRIJOL ARROZ TOTAL MENSUAL
ENERO
FEBRERO
MARZO
…
TOTALES . . . . . . . . .
22. 22
RESUMEN GENERAL
-clases-métodos-atributos-método main-paquetes.
Paquetes: los paquetes es una carpeta donde se almacenan las clases de un proyecto, todas las
clases de un paquete tiene una relación.
Java es un lenguaje ordenado, crea las clases en un lugar adecuado al proyecto a realizar.
Todas las clases deben estar dentro de un paquete.
Los paquetes son necesarios para que java ligue las librerías al paquete del proyecto.
public class miclase
{
// Declaración de atributos
private int [] lista;
public String nombre;
public double estatura;
public miclase(){
JtextArea area= new JtextArea();
JOptionPane.showMessageDialog(null,"Constructor vacio"); }
public miclase(int a[],nom,estat)
{ lista=a;
nombre=nom;
estatura= estat;
JtextArea area= new JtextArea();
}
public static void main (String []args){
int a[]={10,20,30,40};
miclase Obj = new miclase();
miclase Obj= new miclase(a,"Juan",1.56);
for (int i=o; i<3;i++)
{area.append (a [i] + "n");}
area.append (nombrre +"n"+estatura + "n");
JOptionPane.showMessageDialog (null,area);
____________________________________________________________________________
area =newJTextArea();
area.append ();
area.setFont (new Font ("Arial" , 180));
area.setColor (new color (blue));
______________________________________________________________________________
public int [] arreglo ----- formato java
public int arreglo [];___________________ formato c,c++
_______________________________________________________________________________
23. 23
Unidad 3 Herencia
3.1 Definición, clase base, clase final.
Es una de las propiedades que permiten la reutilización de código.
Solo cuando los métodos y atributos son públicos o protegidos.
24. 24
3.2 Clasificación; herencia simple y herencia múltiple.
Herencia simple: Una clase hereda características y comportamientos de otra clase.
Java
Herencia múltiple:
-vertical ------ Existe
-horizontal- No existe
26. 26
Aplicación básica de la herencia.
3.3 Reutilización de miembros heredados
¿Qué es la reutilización de código?
Es que por medio de la herencia se utiliza código java de clases previamente desarrollados.
Ejemplo:
Problema 1: Desarrollar un programa para determinar si un número es o no primo leído por el
teclado.
Problema 2: Imprimir todos los primos entre 2 y 100
Problema 3: obtener la suma de las siguientes expresiones.
29. 29
3.4 Referencia al objeto de la clase base.
// Problema: Realizar un programa para depreciar un bien usando el método de la
// línea recta, el importe en depreciar el bien en un número de años.
//dividiendo el capital entre el número de años, el resultado es la cantidad, depreciada cada año.
32. 32
3.6 Redefinición de miembros heredados.
A veces es importante redefinir los miembros heredados con la necesidad de darles a algunos
métodos nuevos comportamientos.
Para llamar el método de la superclase se usa el método super y el método redefinido con su
propio nombre.
Usando la herencia simple usar un programa para calcular lo siguiente:
Imprimir una tabla de divisores de los 20 primeros números naturales definiendo en cada una de
las tablas de la siguiente forma:
1 2 3 4 5 6 7
1 x
2 x
3 x
4 x x
5 x
6 x x
7 x cuantos divisores ,si es o no primo
33. 33
Unidad 4 Polimorfismo
4.1 Definición
Esta característica permite implementar múltiples formas de un mismo método, dependiendo
cada una de ellas de la clase sobre la que se realice la implementación. Se puede acceder a una
variedad de métodos distintos, todos con el mismo nombre pero con distintos tipos y formas de
argumento.
4.2 Clases abstractas; definición, métodos abstractos, implementación de clases abstractas y
modelado.
Clases abstractas
Son clases genéricas que se crean con la intención de usar sus atributos y métodos donde la
subclase se encargara de los detalles de cada método. De una clase abstracta no puede crearse un
objeto. Si no que solo son creadas para ser derivadas de otras clases, donde dentro de cada clase
se redefinirá cada uno de sus métodos.
34. 34
Aplicaciones de las clases abstractas
Problema: Usando clases abstractas desarrollar un programa para calcular una tabla de
depreciación por la suma de los números de años.
36. 36
4.3 Interfaces: Definición, implementación de interfaces, herencia de interfaces.
Interfaces:
Es un dispositivo o un sistema utilizado por entidades inconexas. Por ejemplo un control remoto, el idioma
inglés, etc.
En java una interfaz es un dispositivo que permite interactuar a objetos no relacionados entre sí.
En java básicamente una interfaz se define como un conjunto de mensajes que se pueden aplicar a muchas
clases de objetos a las que cada una de ellas debe responder de una forma adecuada.
Ejemplo
public interface Serie
int metodo1 ();
void metodo2 ();
void metodo3();
public class Calculadora implements Serie
{
// datods
public calcularDatos ();
}
public inte metodo1(){
// cuerpo del metodo
//realiza lo que el metodo 1 realiza en esta clase
}
public void metodo2() {
// cuerpo del metodo
//realiza lo que el metodo 1 realiza en esta clas
public void metodo3() {
37. 37
}
public static void main (String [] args ) {
}
}
publi class elementos implements Serie
// Datos
public Elementos () {
}
public int metodo1(){
// cuerpo del metodo
//realiza lo que el metodo 1 realiza en esta clas
}
40. 40
Aplicación de las interfaces
Todos los datos declarados de una interface pueden ser de tipo final, abstracto o estático.
Usar una interfaz para calcular la transpuesta de una matriz.
import javax.swing.*;
public class Transpuesta implements Matriz {
public JTextArea area;
public int b [][];
public Transpuesta () {
area = new JTextArea ();
b = new int [4][4];
}
public void calcular () {
for (int j=0; j<4; j++) {
for (int k = 0; k <4 ; k++ ) {
b [j][k]= a[k][j];
}
}
}
public void imprimir () {
area.append ("El arreglo original es: n");
for (int i =0; i<4; i++ ) {
for (int j=0 ;j<4;j++) {
area.append (a [i][j] + "t");
41. 41
}
area.append ("n");
}
area.append ("nn Matriz transpuesta: n");
for ( int i=0 ; i<4; i++ ) {
for ( int j =0; j<4 ; j++) {
area.append ( b[i][j]+"t");
}
area.append ("n");
}
JOptionPane.showMessageDialog ( null,area) ;
} // cierra metodo
public static void main (String [] args ) {
Transpuesta Obj= new Transpuesta () ;
Obj.calcular () ;
Obj.imprimir ();
}
} // cierra clase.
public class Table extends Transpuesta {
public Table () {
super ();
}
public void llamar (){
super.calcular();
super.imprimir();}
public static void main (String [] args ) {
Table Obj= new Table();
Obj.llamar();
}
}
42. 42
import javax.swing.*;
public class Eleccion implements Partidos {
public JScrollPane barra;
public JTextArea area;
public int total [] ;
public int mayor;
public Eleccion () {
mayor=0;
43. 43
area = new JTextArea (15,15);
barra = new JScrollPane (area) ;
}
public void votando (){
int distrito=0;
int partido=0;
int sumaPri=0;
int sumaPan=0;
int sumaPrd=0;
for ( int i = 0; i <= 510000; i++) {
partido = (int) (Math.random ()*2);
distrito= (int) (Math.random () * 10);
if (partido==0){ pri [distrito]= pri[distrito]+1; sumaPri++;}
if (partido==1){ pan [distrito]= pan [distrito] +1;sumaPan++;}
if (partido==2){ prd [distrito]= prd [distrito] +1;sumaPrd++;}
}
pri[10]=sumaPri; prd[10]= sumaPrd; pan [10]=sumaPan;
}
public void ganador () {
area.append ("Pri tPantPrdtTotalesn");
for ( int i=0; i<=10; i++){
area.append (pri [i]+"t"+pan [i]+"t"+prd [i] + "n");
}
int g=0;
mayor=pri[10];
if (pan[10]>mayor){
mayor=pan [10];
g=1;
}
if (prd [10] > mayor){
mayor=prd [10];
g=2;
}
44. 44
if(g==0){area.append( "El ganador es el Pri con"+ pri[10]+"votos");}
if(g==1){area.append( "El ganador es el Pan con"+ pan[10]+"votos");}
if(g==2){area.append( "El ganador es el Prd con"+ prd[10]+"votos");}
JOptionPane.showMessageDialog (null,barra);
}
public static void main (String [] args ) {
Eleccion Obj = new Eleccion();
Obj.votando();
Obj.ganador();
}
}
45. 45
import javax.swing.*;
public class Tabla implements Pitagoras {
public JScrollPane barra;
public JTextArea area;
public int arreglo[][];
int fila;
int columna;
public Tabla () {
int fila=0;
int columna=0;
arreglo= new int [11][11];
area = new JTextArea (40,40);
barra = new JScrollPane (area) ;
}
public void crearTabla () {
for ( fila=1; fila <=10; fila++) {
for (columna=1; columna<=10; columna++){
47. 47
Unidad 5 Excepciones
Es cuando en la ejecución de un programa sucede un error, entonces se dice que las excepciones
son un conjunto de instrucciones para atrapar esos errores y taparlos adecuadamente para evitar
la parada de la ejecución anormal del programa.
Con una excepción lanzada, si el error ocurre el programa sigue funcionando como si no ocurriese
nada.
Ejemplo:
Para tratar excepciones se utilizan 5 palabras claves: try, catch, throw, throws y finally.
int a=10;
int b=0;
try {
int s= a/b;
}
catch (ArithmeticException){
System.out.println ("Division por
cero); }
area.append ( "El valor es " +s+ "n");
}
public void dividir (int a, int b){
int valor= a/b;
area.append ("El valor es " + valor);
}
48. 48
int num[1]= new int [2];
int a=10,b=0;
try { num [4]=10;
int s=a/b;
}
catch (Array IndexOutOf Bounds Exception except) {
System.out.println ( "Arreglo fuera de limite n");
}
catch (Arithmetic Exception except )
{ System.out.println ("No se puede dividir entre cero")
}
String cad= campotext.getText ();
int num= Integer.parseInt( cad );
try {
String cad= campotext.getText();
int num= Integer.parseInt ( cad);
catch (NumberFormatException except ){
JOptionPane.showMessageDialog (null, "Dato incorrecto");
}
49. 49
Unidad 6. FLUJOS Y ARCHIVOS
Archivos Archivos: Es un conjunto de datos
almacenados en un formato
determinado.
Datos
Imagenes
Musica
Video
Texto
Alfanumericos
Archivos de datos: Es una colección de registros lógicamente relacionados que tienen una
aplicación común.
Registro: Es una entidad formada por un conjunto de campos formando un tuplax, es un ente
dependiente del conjunto y accesado con forma individual.
public in clave;
public String nombre;
public String direccion;
public String ciudad;
public String estado;
clave nombre direccion ciudad estado
En java los campos de un archive se declaran como atributos de una clase a diferencia de c, c++
que declaran como un tipo RECORD.
50. 50
¿Qué es un campo? Es una característica de un objeto y es una parte fundamental de un archivo
de datos.
Es una unidad mínima de un registro.
Existen distintos tipos de campo:
Campos claves: Son utilizados para aplicar una búsqueda, para localizarlo en el archivo.
Estos campos también reciben el nombre de llaves de identificación. Tambien reciben el nombre
de campos primarios.
Campos secundarios: Son campos cuya información se repite, fusiona con otros campos para
forma una segunda alternativa de búsqueda.
Ejemplos: Fechas de nacimiento, código postal, fecha de filiación, dirección.
Todos los sistemas de información aplican entre los datos o tablas de archivos un conjunto de
operaciones las cuales son fundamentales para tener actualizados los datos del sistema en
cualquier momento.
Estas operaciones son:
Creacion de las tablas- Definir cada uno de los componentes de las tablas.
Actualizacion :
Insercion de un nuevo registro.
Eliminacion de registro.
Modificaciones de registro.
Consulta
-Busqueda
-Visualizacion general
-Generacion de reportes
Mantenimiento.
51. 51
Operaciones sobre archivos
-Creación del archivo
Define los componentes
private int clase
private String nombre
Definir el nombre interno del archivo
private DatoOutputStream archivo;
Definir un nombre de archivo, para detectar si existe el archivo.
File fichero;
fichero= new File ("Ventana del");
if ( fichero.existe()){
ejecutar el archivo}
Escribir los campos del archivo .
archivo.writeInt (clave);
Para escribir los campos de se usan los siguientes métodos;
writeInt () // Escribe un entero
writeDouble()
writeFloat()
writeLog
writeChar()
writeUTF()
WriteChars() writeByte()
52. 52
El método que escribe un registro es:
void insertar ( int clave, String nombre ){
try{
archivo= new DataOutputString ( new PutferedOutput Stream (new FileOutput Stream
("alumnos.dat",true));
archivo.writeInt (clave);
archivo.writeUTF (nombre );
}
catch (IOException e ){
System.out.println ("error"+ e.getMessage ());
}
finally {
try{
archivo.clase ();
}
catch (IOException ff )
{
System.out.println ( "No se puede cerrar el archivo ");
}
}