Download Repaso desarrollo de software Parte #1 Jorge Iván Meza Martínez
Document related concepts
no text concepts found
Transcript
Repaso desarrollo de software Parte #1 Jorge Iván Meza Martínez [email protected] Especialización en Gestión de Redes de Datos Universidad Nacional de Colombia – Sede Manizales 1/55 Contenido ● Concepto desarrollo de software ● Modelo de desarrollo en cascada ● In/dependencia de plataforma ● Concepto de algoritmo y sus elementos ● Unidad mínima de compilación en Java ● Manejo de la E/S estándar ● Conversión de tipos ● Manejo básico de excepciones 2/55 Desarrollo de software Recibe un problema o Situación Planea una solución Realiza una implementación computacional Hardware / software 3/55 Modelo de desarrollo en cascada Análisis Diseño Implementación Pruebas Implantación Mantenimiento 4/55 Análisis ● ● ● ● ● Se identifica y entiende el problema (requisitos o requerimientos). Qué es lo que me están solicitando ? Qué es lo que está sucediendo ? Se realiza en el mundo real. No incluye entidades computacionales a no ser que estas hagan parte intrínseca de la situación. No incluye ningún tipo de solución al problema. 5/55 Diseño ● ● ● ● ● Se planean diferentes soluciones al problema recién identificado y se elige la idónea. Cómo voy a solucionar el problema planteado ? Puede o no incluír entidades computacionales como bases de datos, conexiones cliente-servidor, etc que hagan parte de la solución. No debería estar ligado a un lenguaje de programación específico. Especifica las partes funcionales de la solución y como se relacionan entre ellas. 6/55 Implementación ● ● ● ● Llevar a cabo la solución propuesta en el diseño en un lenguaje de programación específico. Se escribe el código fuente del programa para generar finalmente el ejecutable. En las etapas de diseño e implementación se debe tener en cuenta la modularidad para lograr la máxima reutilización posible. Comúnmente se utiliza un ambiente integrado de desarrollo (IDE) para facilitar este etapa. 7/55 Pruebas ● ● Garantizar que lo implementado está correcto. – Lo que hace lo hace bien: sus salidas corresponden con sus entradas y el tipo de operación realizada. – Hace lo que tenía que hacer: satisface los requisitos. Existen varios tipos de pruebas. – Pruebas funcionales → usuario – Pruebas unitarias – Pruebas de aceptación – Pruebas de regresión – Etc. 8/55 Implementación lenguajes dependientes de plataforma Código Códigofuente fuente(*.c) (*.c) Compilador Compilador gcc Código Códigoobjeto objeto(*.o) (*.o) Enlazador Enlazador ld Archivo Archivoejecutable ejecutable(*.exe) (*.exe) 9/55 Implementación lenguajes dependientes de plataforma Archivo Archivoejecutable ejecutable(*.exe) (*.exe) Sistema SistemaOperativo Operativo Hardware Hardware 10/55 Implementación lenguajes independientes de plataforma Código Códigofuente fuente(*.java) (*.java) Compilador Compilador javac Código Códigoobjeto objeto(*.class) (*.class) Empaquetador Empaquetador jar Paquete Paquetedistribuíble distribuíble(*.jar) (*.jar) 11/55 Implementación lenguajes independientes de plataforma Código Códigoobjeto objeto(*.class) (*.class) Java JavaVirtual VirtualMachine Machine(JVM) (JVM) Sistema SistemaOperativo Operativo Hardware Hardware 12/55 Implementación lenguajes independientes de plataforma Bytecodes Código Códigoobjeto objeto(*.class) (*.class) Middleware Java JavaVirtual VirtualMachine Machine(JVM) (JVM) Sistema SistemaOperativo Operativo Hardware Hardware 13/55 Monolítico vs. Modular 14/55 Diseño Modularidad Implementación Acoplamiento ● Cohesión ● 15/55 Paradigmas de programación Programación imperativa o procedimental Programación orientada a objetos 16/55 Algoritmo ● ● Una serie de pasos ordenados para realizar una tarea específica. Puede contener los siguientes elementos. – Expresiones → representan un valor – Sentencias → representan algo que hacer – Variables – Funciones – Objetos – Clases 17/55 Comentarios // … /* … */ /** … */ 18/55 Identificadores ● ● ● Sirven para nombrar entidades computacionales. Su nombre debe empezar con una letra del alfabeto o los carácteres especiales $ o _. El resto del nombre puede tener dígitos, letras o los carácteres mencionados. 19/55 Palabras reservadas 20/55 Tipos de datos ● Numéricos – – Valor entero ● byte (8 bits) ● short (16 bits) ● int ● long (64 bits) (32 bits) Valor de punto flotante ● float ● double 21/55 Tipos de datos ● Booleanos – ● Caracter – ● boolean char Cadenas – String 22/55 Variables int x; x = 10; int y = x; 23/55 Operadores aritméticos * / % + 24/55 Operadores Unarios ++ + ~ ! (casting) 25/55 Operadores de bits << >> >>> 26/55 Arreglos n-dimensionales ● Pueden almacenar una cantidad finita de valores. ● Su tamaño no se puede modificar una vez definido. ● ● ● ● Todos los elementos deben ser del mismo tipo de datos. Sus elementos se acceden a través de un índice entero que empieza en cero (0). Pueden tener varias dimensiones: 1 → arreglos, 2 → matrices, … Su longitud se puede consultar con el atributo length. 27/55 Arreglos n-dimensionales int v; 10 int[] a = new int[5]; 10 20 30 40 50 0 1 2 3 4 length =28/55 5 Arreglos n-dimensionales int[] a; a = new int[100]; a[5] = 77; int x = a[5]; 29/55 Arreglos n-dimensionales for (int i=0; i<a.length; i++) { a[i] = 0; } 30/55 Condicionales if(expresión) { } else { } 31/55 Operadores de relación < > <= >= instanceof == != 32/55 Operadores lógicos && || ^ 33/55 Expresiones compuestas para condicionales if(x > 3 && (a + 1 <= c || d != !k)) { } 34/55 Condicionales switch(variable) { case v1: // … break; case v2: // … break; // … default: break; } // … 35/55 Iteraciones for(variable; condición; aumento) { } 36/55 Iteraciones for(int x=0; x<10; x++) { System.out.println(x); } 37/55 Iteraciones while (condición) { } 38/55 Iteraciones do { } while (condición); 39/55 Ruptura for(int i=0; i<10; i++) { if(i == 5) break; System.out.println(i); } 40/55 Salto for(int i=0; i<10; i++) { if(i == 5) continue; System.out.println(i); } 41/55 Unidad mínima de compilación Java // package // imports public class MiClase { public static void main(String[] args) { // ... } } 42/55 Hola Mundo public class HelloWorld { public static void main(String[] args) { System.out.println(“Hello World“); } } HelloWorld.java 43/55 Compilar y ejecutar $ javac HelloWorld.java $ java HelloWorld 44/55 Flujos de E/S del sistema System.in System.out System.err 45/55 Salida System.out.print(““) System.out.println(““) System.err.print(““) System.err.println(““) 46/55 Entrada estándar: Console import java.io.Console; class Greetings { public static void main(String[] args) { Console cons = System.console(); System.out.print("What's your name ? "); String name = cons.readLine(); System.out.println("Oh, your name is " + name); } } No es compatible con el ambiente de Netbeans! 47/55 Entrada estándar: Scanner import java.util.Scanner; class Greetings { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.print("What's your name ? "); String name = sc.nextLine(); System.out.println("Oh, your name is " + name); } } 48/55 Conversión de tipos: String → otros String s0 = "10"; String s1 = "5.123"; String s2 = "true"; int i = Integer.parseInt(s0); float f = Float.parseFloat(s1); boolean b = Boolean.parseBoolean(s2); System.out.println("Integer: " + i); System.out.println("Float: " + f); System.out.println("Boolean: " + b); 49/55 Conversión de tipos: String → otros String str = "This is so wrong!"; int i = Integer.parseInt(str); System.out.println("Integer: " + i); 50/55 Conversión de tipos: String → otros Exception in thread "main" java.lang.NumberFormatException: For input string: "This is so wrong!" at java.lang.NumberFormatException.forInputString (NumberFormatException.java:65) at java.lang.Integer.parseInt(Integer.java:492) at java.lang.Integer.parseInt(Integer.java:527) at TypeConv.main(TypeConv.java:9) 51/55 Exceptions! Exception in thread "main" java.lang.NumberFormatException: For input string: "This is so wrong!" at java.lang.NumberFormatException.forInputString (NumberFormatException.java:65) at java.lang.Integer.parseInt(Integer.java:492) at java.lang.Integer.parseInt(Integer.java:527) at TypeConv.main(TypeConv.java:9) 52/55 Manejo de excepciones String str = "This is so wrong!"; try { int i = Integer.parseInt(str); System.out.println("Integer: " + i); } catch(NumberFormatException e) { System.out.println("Error convirtiendo: " + e.getMessage()); } 53/55 Conversión de tipos: otros → String int x = 50; String str1 = new Integer(x).toString(); String str2 = x + ““; 54/55 Actividad Desarrollar una aplicación en Java que solicite al usuario la cantidad de estudiantes del curso, por cada uno de ellos solicite su edad y la almacene en un arreglo. Finalmente calcule el índice del alumno mas jóven, el promedio de las edades e imprima las edades ingresadas. 55/55