Programación Orientado a Objetos (POO

)
ING. MANUEL ABANTO MORALES Sesión: 6

Flujograma
Inicio Saberes Previos
Principios y fundamentos

Competencias Sistematización de programa básico

Fundamentos POO

Aplicación de un programa básico
FIN

Objetivos de la sesion 

Objetivos:   

Conocer los principios, fundamentos y conceptualizar la programación orientada a objetos (POO) manejando la clase String Abstraer el concepto de clase del mundo real y su aplicación en la programación orientada a objetos (POO) Alinear el concepto de la Clase String con el lenguaje de programación Java.

Introducción 
Dentro

de un objeto de la clases String o StringBuffer, Java crea un array de caracteres de una forma similar a como lo hace el lenguaje C++. A este array se accede a través de las funciones miembro de la clase.

Creación de un String 
Los

strings u objetos de la clase String se pueden crear explícitamente o implícitamente.  Para crear un String implícitamente basta poner una cadena de caracteres entre comillas dobles. Por ejemplo: System.out.println("El primer programa"); Java crea un objeto de la clase String automáticamente.

Creación de un string 
Para

crear un string explícitamente escribimos:

String str=new String("El primer programa");

También se puede alternativamente String str="El primer programa";

escribir,

Creación de un string 
Para

crear un string nulo se puede hacer de estas dos formas String str=""; String str=new String(); Un string nulo es aquél que no contiene caracteres, pero es un objeto de la clase String..

Creación de un string
Sin embargo, String str; está declarando un objeto str de la clase String, pero aún no se ha creado ningún objeto de esta clase

Información de un string 
podemos

obtener información relevante acerca del objeto String a través de las funciones miembro.  Para obtener el número de caracteres que guarda un string se llama a la función miembro length.
String str="El primer programa"; int longitud=str.length(); System.out.println("longitud cadena: "+longitud)

Información de un string 
Una

vez creado un objeto de la clase String podemos obtener información relevante acerca del objeto a través de las funciones miembro.  Para obtener el número de caracteres que guarda un string se llama a la función miembro length. String str="El primer programa"; int longitud=str.length();

Información de un string 
Podemos

conocer si un string comienza con un determinado prefijo, llamando al método startsWith, que devuelve true o false, según que el string comience o no por dicho prefijo String str="El primer programa"; boolean resultado=str.startsWith("El"); En este ejemplo la variable resultado tomará el valor true.

Información de un string 
Ejemplo

de codigo: String str="El primer programa"; boolean resultado=str.startsWith("El"); if(resultado){System.out.println("si comineza");} else {System.out.println("no comienza");}

Información de un string 
De

modo similar, podemos saber si un string finaliza con un conjunto dado de caracteres, mediante la función miembro endsWith. String str="El primer programa";
boolean resultado=str.endsWith("programa"); if(resultado){System.out.println("si finaliza");} else{System.out.println(³no finaliza");}

Información de un string 
Si

se quiere obtener la posición de la primera ocurrencia de la letra p, se usa la función indexOf. String str="El primer programa"; int pos=str.indexOf('p'); System.out.println("Posicion de p"+pos);

Información de un string 
Para

obtener las sucesivas posiciones de la letra p, se llama a otra versión de la misma función pos=str.indexOf('p', pos+1); El segundo argumento le dice a la función indexOf que empiece a buscar la primera ocurrencia de la letra p a partir de la posición pos+1.

Información de un string 
Codigo:

String str="El primer programa"; int pos=str.indexOf('p'); System.out.println("Posicion de p: "+pos); pos=str.indexOf('p', pos+1); System.out.println("Posicion de p: "+pos);

Información de un string 
Otra

versión de indexOf busca la primera ocurrencia de un substring dentro del string. String str="El primer programa"; int pos=str.indexOf("pro");

Información de un string 
Codigo:

String str="El primer programa"; int pos=str.indexOf("pro"); System.out.println("Pos. de pro: "+pos);

comparación de un string 
Así

pues, el método equals compara un string con un objeto cualquiera que puede ser otro string, y devuelve true cuando dos strings son iguales o false si son distintos. String str="El lenguaje Java";
boolean resultado=str.equals("El lenguaje Java");

La variable resultado tomará el valor true.

comparación de un string
String str1="El lenguaje Java"; String str2=new String("El lenguaje Java"); if(str1==str2){ System.out.println("Los mismos objetos³) }else{ System.out.println("Distintos objetos"); }

comparación de un string
Codigo: String str1="El lenguaje Java"; String str2=new String("El lenguaje Java"); String str3="El Lenguaje Java";
if(str1==str2){ System.out.println("Los mismos objetos"); } else{System.out.println("Distintos objetos"); }

comparación de un string
if(str1.equals(str2)){System.out.println("son la misma cadena");} else{System.out.println("son cadenas diferentes");} if(str1.equals(str3)){System.out.println("son la misma cadena");} else{System.out.println("son cadenas diferentes");} if(str1.equalsIgnoreCase(str3)){System.out.println("son la misma cadena");} else{System.out.println("son cadenas diferentes");}

comparación de un string
La función miembro compareTo devuelve un entero menor que cero si el objeto string es menor (en orden alfabético) que el string dado, cero si son iguales, y mayor que cero si el objeto string es mayor que el string dado.

comparación de un string
Codigo:
int resultado; String str1="El lenguaje Java"; String str2=new String("El lenguaje Java"); String str3="El Lenguaje Java"; resultado=str1.compareTo(str2); if(resultado==0){System.out.println("son la misma cadena");} else{System.out.println("son cadenas diferentes");} System.out.println("Valor de Resultado: "+resultado);

comparación de un string
Codigo:
//opcion 2 resultado=str1.compareTo(str3); if(resultado==0){System.out.println("son la misma cadena");} else{System.out.println("son cadenas diferentes");} System.out.println("Valor de Resultado: "+resultado);

Extraer un substring de un string
Para extraer un substring (porción del string) desde una posición determinada hasta el final del string escribimos: String str="El lenguaje Java"; String subStr=str.substring(12); System.out.println("subcadena: "+subStr); Se obtendrá el substring "Java".

Extraer un substring de un string
Una segunda versión de la función miembro substring, nos permite extraer un substring especificando la posición de comienzo y la el final. String str="El lenguaje Java"; String subStr=str.substring(3, 11); Se obtendrá el substring "lenguaje".

Extraer un substring de un string
Codigo: String str="El lenguaje Java"; String subStr=str.substring(12); System.out.println("subcadena: "+subStr); String subStr1=str.substring(3, 11); System.out.println("subcadena1: "+subStr1);

Convertir un numero a un string
Para convertir un número en string se emplea la función miembro estática valueOf (más adelante explicaremos este tipo de funciones). int valor=10; String str=String.valueOf(valor); La clase String proporciona versiones de valueOf para convertir los datos primitivos: int, long, float, double.

Convertir un numero a un string
codigo:
int valor=10; String str=String.valueOf(valor); System.out.println("Cadena: "+str); float valorf=10.09f; String strf=String.valueOf(valorf); System.out.println("Cadena: "+strf); double valord=10.19; String strd=String.valueOf(valord); System.out.println("Cadena: "+strd);

Eliminar espacios en un String
Para eliminar los espacios (al comienzo o al final) tenemos la función miembro trim String str=" 12 "; String str1=str.trim();

Eliminar espacios en un String
codigo: String str=" h o l a "; String str1=str.trim(); System.out.println("str :"+str+"***"); System.out.println("str1:"+str1+"***");

Convertir un String a numero
Para convertir un string en número entero, primero quitamos los espacios en blanco al principio y al final y luego, llamamos a la función miembro estática parseInt de la clase Integer (clase envolvente que describe los números enteros) String str=" 12 "; int numero=Integer.parseInt(str.trim());

Convertir un String a numero
Codigo:
String str=" 1299 "; int numero=Integer.parseInt(str.trim()); System.out.println("Numero entero: "+numero); String str1=" 12.99 "; double num=Double.parseDouble(str1.trim()); System.out.println("Numero double: "+num);

Caso de aplicacion
Problema:
Se desea calcular el sueldo del personal que labora en la empresa sabiendo que el sueldo básico y los descuentos varían según se indica:
Cargo Gerente Jefe Analista Contador SueldoBasico 8000 5000 3000 4000 Dcto 4% 3% 2% 3% Horas Extras ----------3% mas Hora Nor. 2% mas Hora Nor.

Esta información es por mes y el sueldo se calcula según el cargo y las horas trabajadas en la semana.

Programación orientada a objetos
Análisis del problema:
1. Planteamiento del problema:
Calcular el sueldo según el cargo y numero de horas trabajadas según se indica:

Salida: sueldo Entrada: cargo,NumHor

Programación orientada a objetos
Análisis del problema:
1.

Proceso: si (cargo==³Gerente´){ sueHor= 8000/(30*8); sueldoBru = sueHor*numHor; descto = sueldoBru *0.04; sueldo=sueldoBru ± descto;} si (cargo==³Jefe´){ sueHor= 5000/(30*8); sueldoBru = sueHor*numHor; descto = sueldoBru *0.03; sueldo=sueldoBru ± descto;}

Programación orientada a objetos
Análisis del problema:
Proceso: si (cargo==³Analista´){ sueHor= 3000/(30*8); sueHex=sueHor*1.03; si(numHor <=40){sueldoBru = sueHor*numHor;} sino{sueldoBru=sueHor*40; sueldoBru=sueldoBru+sueHex*(numHor-40)} descto = sueldoBru *0.02; sueldo=sueldoBru ± descto;}
1.

Programación orientada a objetos
Análisis del problema:
Proceso: si (cargo==³Contador´){ sueHor= 4000/(30*8); sueHex=sueHor*1.02; si(numHor <=40){sueldoBru = sueHor*numHor;} sino{sueldoBru=sueHor*40; sueldoBru=sueldoBru+sueHex*(numHor-40)} descto = sueldoBru *0.03; sueldo=sueldoBru ± descto;}
1.

Programación orientada a objetos
Análisis del problema:
2. Identificar Objetos:
Como se identifican los objetos? se buscan los sustantivos presentes en especificación, los sustantivos son los objetos. la

En el caso planteado solo se encuentra un sustantivo: ³Factorial´

Programación orientada a objetos
Objeto: Sueldo Cargo numHor Objeto: Sueldo Cargo numHor

Objeto: Sueldo Cargo numHor

Objeto: Sueldo Cargo numHor

establecerCargo() establecerNumHor() CalculaSueldo() MuestraSueldo():real

establecerCargo() establecerNumHor() CalculaSueldo() MuestraSueldo():real

establecerCargo() establecerNumHor() CalculaSueldo() MuestraSueldo():real

establecerCargo() establecerNumHor() CalculaSueldo() MuestraSueldo():real

Programación orientada a objetos
Representación de clases:
Sueldo

Programación orientada a objetos
Representación de la clase y sus instancias:
Sueldo
La linea punteada indica Relacion ³Instancia´

Objeto: Sueldo Cargo numHor establecerCargo() establecerNumHor() CalculaSueldo() MuestraSueldo():real

Objeto: Sueldo Cargo numHor establecerCargo() establecerNumHor() CalculaSueldo() MuestraSueldo():real

Objeto: Sueldo Cargo numHor establecerCargo() establecerNumHor() CalculaSueldo() MuestraSueldo():real

Objeto: Sueldo Cargo numHor establecerCargo() establecerNumHor() CalculaSueldo() MuestraSueldo():real

Calcular El Factorial de un numero
Clase Sueldo
1. Declaraciones Datos Cargo:Cadena; numHor:Real; Sueldo, sueldoBru, horNor, HorExt: real; 2. Metodo establecerCargo(Car: Cadena) a. Cargo = Car; b. Fin Metodo establecerCargo 3. Metodo establecerNumHor(nh: Cadena) a. numHor = nh; b. Fin Metodo establecerNumHor

Calcular Sueldo de un empleado
Clase Sueldo
si (cargo==³Gerente´){ sueHor= 8000/(30*8); sueldoBru = sueHor*numHor; descto = sueldoBru *0.04; sueldo=sueldoBru ± descto;} si (cargo==³Jefe´){ sueHor= 5000/(30*8); sueldoBru = sueHor*numHor; descto = sueldoBru *0.03; sueldo=sueldoBru ± descto;}

Calcular Sueldo de un empleado
Clase Sueldo
si (cargo==³Analista´){ sueHor= 3000/(30*8); sueHex=sueHor*1.03; si(numHor <=40){sueldoBru = sueHor*numHor;} sino{sueldoBru=sueHor*40; sueldoBru=sueldoBru+sueHex*(numHor-40)} descto = sueldoBru *0.02; sueldo=sueldoBru ± descto;}

Calcular Sueldo de un empleado
Clase Sueldo
si (cargo==³Contador´){ sueHor= 4000/(30*8); sueHex=sueHor*1.02; si(numHor <=40){sueldoBru = sueHor*numHor;} sino{sueldoBru=sueHor*40; sueldoBru=sueldoBru+sueHex*(numHor-40)} descto = sueldoBru *0.03; sueldo=sueldoBru ± descto;} FinCalcularSueldo

Calcular Sueldo de un empleado
Clase Sueldo
6. Metodo obtenerSueldo( ) : Entero a. return sueldo; b. Fin Metodo obtenerSueldo

Calcular Factorial de un numero
Clase EjecutaSueldo
1. Metodo principal a. Declaraciones Variables cargo: Cadena numHor: Real b. Declarar, crear, e iniciar objeto sueldo objsueldo = new sueldo() c. Solicitar cargo d. Solicitar NumHoras

Calcular Factorial de un numero
Clase EjecutaSueldo
1. Metodo principal e. Establecer objSueldo.establecerCargo(cargo) f. Establecer objSueldo.establecerNumHor(numHor) g. Calcular objSueldo.calcularSueldo() h. Imprimir objSueldo.obtenerSueldo() i. Fin Metodo Principal Fin Clase EjecutaFactorial

Fin de la Exposición
Muchas Gracias

Sign up to vote on this title
UsefulNot useful