La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Qué es orientación a objeto ?

Presentaciones similares


Presentación del tema: "Qué es orientación a objeto ?"— Transcripción de la presentación:

1 Qué es orientación a objeto ?
Es solo una manera de organizar el código. Los datos que usa un programa se organizan en objetos Los objeos son una colección de variables asociadas a métodos Métodos que modifican las variables o “estado” de un objeto Métodos que retornan valores que reflejan el “estado” del objeto (valor de sus variables)

2 Una clase que ya conocemos: Console
Constructores: Console c = new Console(); Console c = new Console(30,15); Console c = new Console(“Hola Gente”); Métodos que retornan un valor: int a = c.readInt(); double d = c.readDouble(); String s = c.readLine(); Métodos que modifican el estado del objeto (no retornan un valor): C.println(String) C.setSize(int, int) C.setLocation(int, int) Para aplicar un método a un objeto: variable_objeto.metodo(parametros) Cons.java

3 Otra clase conocida: el String
Una clase está principalemnte definida por los métodos que se le pueden aplicar a un objeto e esta clase Constructores String myName; //el objeto aun no existe myName = new String(“Nelson Baloian”); String myName = “Nelson Baloian”; El operador de concatenación (unir 2 strings): String nobre = readLine(); saludo = “hola “+nombre+”, como estas”; Se puede usar para unir strings con cualquier otra cosa que será convertida forzadamente a string

4

5 Programa

6 Explicaciones

7 Explicaciones

8 Obtener una respuesta “si” o “no”
Solución 1 String r; //respuesta while(true){ C.print(“si o no ? “); r = C.readLine(); //leer respuesta r = r.trim(); //eliminar espacios r = r.toLowerCase(); //a minusculas if(r.equals(“si”)||r.equals(“no”))break; } if( r.equals(“si”) ) ... else ... Solución 2 r = C.readLine().trim().toLowerCase(); //ver solución con switch en apuntes

9 Prob 3: String repetir(String x,int y){...}
Ejs: repetir(“ja”,3) = “jajaja” y repetir(“a”,0) =“” Solución 1 (con iteración) String aux = “”; for(int i=1; i<=y; ++i)//repetir y veces aux = aux + x; // o aux+=x; return aux; Solución 2 (con recursión al final: tail recursion) if( y <= 0 ) return “”; else return x + repetir(x,y-1); Solución 3 (con recursión al comienzo: head recursion) return repetir(x,y-1) + x;

10 Obteniendo los caracteres del String
Largo (en caracteres) de un String : int i = myName.length(); - i tendrá el valor 14 para el String “Nelson Baloian” Obteniendo el i-esimo carácter: char c = myName.charAt(0); - c contendrá el caracter ‘N’ char c = myName.charAt(3); - c tendtrá el carácter ‘s’ Las posiciones parten desde el 0 y llegan hasta length() - 1

11 Public static int valorInt(String x){
Public static int valorInt(String x){...} devuelve valor entero contenido en x Solución 1 (“a mano”) x = x.trim(); //eliminar espacios if(x.equals(“”)) return 0; int i = 0; int signo = 1; if (x.charAt(0) == ‘-’) { signo = -1; i++; } else if (x.charAt(0) == ‘+’) i++; // signo ya es positivo int s=0, p=1; for(; i>=0; --i){ s += p*(x.charAt(i)-'0'); //’7’-‘0’= 7 (int) p *= 10; } return s; Solución 2: return Integer.parseInt(x); //para enteros retunrn Double.parseDouble(x); // para reales

12 Problema Programar el método public static String inverso(String x) en el que inverso(“roma”) = “amor” inverso(“a”) = “a” inverso(“”) = “”

13 Soluciones Iterativas
Solución 1 (iteración para recorrer caracteres de izq a der) String aux = “”; for(int i=0; i<x.length(); ++i) aux = x.charAt(i) + aux; return aux; Solución 2 (iteración para recorrer caracteres de der a izq) for(int i=x.length()-1; i>=0; --i) aux = aux + x.charAt(i)

14 Obteniendo Subsecuencias
2 métodos distintos: String substring(int) String substring(int, int) String sub = myName.substring(7); - sub contendrá el string “Baloian” String sub = myName.substring(3, 6); - sub contendrá el string “son” N o e l s n B a l o i a n 4 1 2 3 5 6 7 8 9 10 11 12 13 7 3,6

15 Soluciones Recursivas
Solución 3 (recursión al final) int n = x.length(); if( n == 0 ) return “”; else return x.charAt(n-1) //ultimo caracter + inverso(x.substring(0,n-1)); } Solución 4 (recursión al comienzo) if( x.equals(“”) ) return inverso(x.substring(1)) + x.charAt(0); //primer caracter

16 Búsqueda de Subsequencias
int indexOf(String) : entrega la primera aparición del string que viene como parámetro en el string al cual se le aplica el método, o un -1 si no estaba String s = new String(“Hello, Nelson, Hello”); int i = s.indexOf(“ello”); - i tomará el valor 1 int i = s.indexOf(String, int) : busca la primera aparicion del string pasado como parámetro a partir de la posición dada int i = s.lastIndexOf(String) : busca la última aparición del string int i = s.lastIndexOf(String, int) : busca la última aparición del string a partir de la posición dada como parámetro hacia atrás

17 Problema: public static int apariciones(String x, String y) {
Problema: public static int apariciones(String x, String y) {...} retorna las veces en que el string y aparece en x si a = “hola, hola, que tal raton con cola” b = “ola” apariciones(a,b) debe entregar 3

18

19

20 Los Archivos de Texto Se organizan en líneas de texto (Strings)
Cada línea consiste una cadena de caracteres que termina con una marca de fin de línea Después de la marca de fin de línea de la última línea viene una marca de fin de archivo Por convención tienen la extensión .txt Se generan con un editor de texto (sin formato) o por un programa Xcxcxcxcxcxc dfdfdfdfd xxxxxxxxxxxxxx ssssssssss ssssssss

21 Escribiendo archivos de texto
Leer de Console una cantidad indeterminada de líneas terminada con el string “fin” y grabarlas en un archivo de nombre “archivo.txt” import java.io.*; class CrearArchivo{ static public void main(String[]args) throws IOException { Console C=new Console(); PrintWriter a=new PrintWriter(new FileWriter(“archivo.txt”)); while(true){ C.print(“linea (o fin) ? “); String linea = C.readLine(); if( linea.equals(“fin”) ) break; a.println(linea); } a.close();

22 Explicaciones 1 1 .import java.io.*;
Inserta (deja disponibles) clases predefinidas para leer y escribir archivos 2. throws IOException si se produce una excepción (“error”) de lectura/escritura, se muestra un mensaje y se aborta (termina) el programa 3. PrintWriter a=new PrintWriter(...); “abre” (prepara, inicializa) archivo para escritura si archivo no existe, se crea, y si ya existe, se regraba ubica el cursor del archivo al comienzo del espacio asignado “archivo.txt”: nombre externo del archivo (en el disco) a: objeto de clase PrintWriter que representa al archivo .

23 POR FAVOR, NO ENTRAR NI SALIR DESPUES DE PASADOS 15 MINUTOS DEL INICIO DE LA CLASE DESCONCENTRAN AL PROFESOR Y A LOS DEMÁS ALUMNOS Atte. Nelson Baloian

24 Explicaciones 2 a.println(linea)
Escribe (graba) una línea en el archivo Graba caracteres del string graba una marca de fin de línea (carácter especial newline o \n) ubica cursor después de newline print: método que sólo graba caracteres (y no newline) .a.close() “cierra” el archivo y graba marca de fin de archivo (eof) .

25 Leyendo archivos de texto
Mostrar en un objeto Console el contenido de cada línea del archivo “archivo.txt” import java.io.*; class LeerArchivo{ static public void main(String[]args) throws IOException{ Console C=new Console(); BufferedReader a = new BufferedReader( new FileReader(“archivo.txt”)); while(true){ String linea = a.readLine(); if( linea==null ) break; C.println(linea); } a.close();

26 Explicaciones 1 .BufferedReader a=new BufferedReader(...);
“abre” (prepara, inicializa) archivo para lectura si archivo no existe, aborta si archivo existe, ubica el cursor al comienzo a: objeto de clase BufferedReader que representa al archivo 2 .a.readLine() lee una línea del archivo entrega un string con los caracteres de la línea avanza cursor al comienzo de la línea siguiente si detecta fin del archivo, entrega valor null (no “”) String linea; while((linea=a.readLine()) !=null){...} 3. a.close() “cierra” el archivo si se omite, se cierra al terminar programa . Explicaciones

27 Problema (15 minutos) 1 .Escriba un programa que lea de un objeto consola un nombre de archivo 2. Cada línea del archivo que contenga el string entregado debe escribirse en un archivo llamado esta<String>.txt y las otras en un archivo llamado noEsta<String>.txt <String> es el string que se dio para buscar .

28 import java.io.*; class DividirArchivo{ static public void main(String[]args)throws IOException{ Console c = new Console(); String archivo = c.readString(); String buscar = c.readString(); BufferedReader a=new BufferedReader( new FileReader(archivo)); //dividir en dos mitades PrintWriter si=new PrintWriter( new FileWriter(“esta”+string+”.txt”)); PrintWriter no=new PrintWriter( new FileWriter (“noEsta”+string+”.txt”)); String linea; for(int i=1; (linea=a.readLine())!=null; ++i) if( (linea.indexOf(string)) != -1 ) si.println(linea); else no.println(linea); si.close(); no.close(); a.close(); }

29 Escribiendo archivos de texto en JAVA
Para abrir el archivo para escribir: PrintWriter x = new PrintWriter ( new FileWriter(filename)) Se pueden escribir líneas con los siguientes métodos: x.print(string) x.println(string) Si existía un archivo con ese nombre se borra y es reemplazado por el que genere el programa Es importante hacer al final x.close() para asegurarse que los datos que aún están en el buffer sean traspasados. Copyfile Replace

30 Entrada y Salida sin Console
Leer de una cantidad indeterminada de líneas terminada con el string “fin” y grabarlas en un archivo de nombre “archivo.txt” import java.util.*; class CrearArchivo{ static public void main(String[]args)throws IOException{ Scanner teclado = new Scanner(System.in)); PrintWriter a=new PrintWriter( new FileWriter(“archivo.txt”)); while(true){ System.out.print(“linea ? “); String linea = teclado.nextLine(); if( linea==null ) break; a.println(linea); } a.close();

31 Jalisco sin Console import java.util.*; public class UsoScanner {
public static void main(String ars[]) { Scanner sc = new Scanner(System.in); System.out.print("hola, como te llamas "); String nombre = sc.nextLine(); System.out.println(nombre+ ", ingresa un numero"); int i = sc.nextInt(); System.out.println(“El mio es "+(i+1)+", yo gano "); }


Descargar ppt "Qué es orientación a objeto ?"

Presentaciones similares


Anuncios Google