230 likes | 490 Views
Lenguaje de Programación Java Profesor: Mauricio Martínez P. Análisis y Diseño Orientado a Objetos. UML: Lenguaje de Modelamiento Unificado Toma de Requerimientos Fase de Analisis Fase de Diseño Programación Orientada a Objetos.
E N D
Lenguaje de Programación Java Profesor: Mauricio Martínez P. Análisis y Diseño Orientado a Objetos • UML: Lenguaje de Modelamiento Unificado • Toma de Requerimientos • Fase de Analisis • Fase de Diseño • Programación Orientada a Objetos
Lenguaje de Programación Java Profesor: Mauricio Martínez P. Análisis y Diseño Orientado a Objetos • Toma de Requerimientos • Casos de Uso • Actores • Pre-Condiciones • Descripción • Post-Condiciones • Excepciones
Lenguaje de Programación Java Profesor: Mauricio Martínez P. Análisis y Diseño Orientado a Objetos Caso de Uso: Matricula de clientes no registrados. Actores: Clientes Pre-Condiciones: Existencia de Cursos en BD Descripción: El cliente ingresa a la vista de cursos, el sistema despliega la lista de cursos disponibles, el cliente selecciona el curso para matricularse, el sistema despliega la vista de registro (Excep. Sin cupo), con los campos nombre, rut e institución, el cliente llena los campos y presiona Aceptar, el sistema confirma la matricula. Post-Condiciones: Se registra un nuevo cliente y se agrega un nuevo alumno al curso seleccionado. Excepciones: Sin cupo. El curso no tiene cupos disponibles.
Lenguaje de Programación Java Profesor: Mauricio Martínez P. Análisis y Diseño Orientado a Objetos • Fase de Análisis • Diagrama de Clases • Clase: “Estructura que modela las propiedades y funcionalidades que definen un conjunto determinado de objetos”. • Objeto: “Modelo de una entidad, ya sea real o abstracta, de identificación única”. * dicta 1 Curso Profesor Alumno Prof_Contra Prof_Horas
Lenguaje de Programación Java Profesor: Mauricio Martínez P. Análisis y Diseño Orientado a Objetos • Fase de Análisis • Diagrama de Secuencia Cliente Curso Alumno verLista() ListaCursos setMatricula(cod) OK setDatos(nom, rut, inst) OK
Lenguaje de Programación Java Profesor: Mauricio Martínez P. Análisis y Diseño Orientado a Objetos • Fase de Diseño • Diagrama de Clases Vst_Cursos LstCursos Abrir() lstCursosSel(cod) Curso getLista() setMatricula(cod) Vst_Registro TxtNombre TxtRut TxtInstitucion BtnAceptar BtnAceptarClick() Alumno Nombre Rut Institucion setDatos(nom,rut,in)
Lenguaje de Programación Java Profesor: Mauricio Martínez P. Análisis y Diseño Orientado a Objetos • Fase de Diseño • Diagrama de Secuencia Cliente Vst_Registro Vst_Cursos Curso Alumno abrir() getLista() Lista_Cursos Lista_Cursos lstCursosSel(cod) setMatricula(cod) OK abrir() Datos btnAceptarClick() setDatos(nom, rut, inst) OK OK
Lenguaje de Programación Java Profesor: Mauricio Martínez P. Análisis y Diseño Orientado a Objetos • Programación Orientada a Objetos • Encapsulamiento: “Posibilidad de agrupar propiedades y funcionalidad de una clase en una sola estructura, controlando el acceso y la manipulación de dichas estructuras” • Herencia: “Posibilidad de recibir en una clase toda o parte de las propiedades y funcionalidades de otra clase” • Polimorfismo: “Posibilidad de darle mas de una forma a una funcionalidad especifica dentro de una clase o entre clases distintas”
Lenguaje de Programación Java Profesor: Mauricio Martínez P. Programación Orientada a Objetos • Encapsulamiento • Atributos (Variables Miembro) • De clase (estáticos) • De instancia • Métodos (Funciones Miembro) • Estáticos • De instancia class Rectangulo { int Dim1; int Dim2; int area() { return Dim1*Dim2; } int perimetro() { return 2*(Dim1+Dim2); } }
Lenguaje de Programación Java Profesor: Mauricio Martínez P. Programación Orientada a Objetos • Encapsulamiento • Control de Acceso • Privado • Publico • Protegido class Rectangulo { private int Dim1; private int Dim2; public int area() { return Dim1*Dim2; } } publico protegido privado clase clases hijas aplicación
Lenguaje de Programación Java Profesor: Mauricio Martínez P. Programación Orientada a Objetos class Rectangulo { private int Dim1; private int Dim2; public void setDim1(int d1) { Dim1 = d1; } public int getDim1() { return Dim1; } : public int area() { return Dim1*Dim2; } } • Encapsulamiento • Control de Acceso • Control programado • Convenciones class Rectangulo { public int Dim1; public int Dim2; public int area() { return Dim1*Dim2; } }
Lenguaje de Programación Java Profesor: Mauricio Martínez P. Programación Orientada a Objetos class Rectangulo { private int Dim1; private int Dim2; public Rectangulo() { this.Dim1 = 10; this.Dim2 = 10; } : public int area() { return Dim1*Dim2; } } • Encapsulamiento • Constructores y Destructores • Constructor por defecto • Constructor programado • Destructor • Referencias a si mismo (this)
Lenguaje de Programación Java Profesor: Mauricio Martínez P. Programación Orientada a Objetos • Encapsulamiento • Instanciando clases Rectangulo rec1 = new Rectangulo(); Rectangulo rec2 = new Rectangulo(); : rec2.setDim1(30); Rectangulo int Dim1 int Dim2 Rectangulo() void setDim1(int d1) int getDim1() void setDim2(int d2) int getDim2() int area() rec1 Dim1 = 10 Dim2 = 10 Instancia 1 rec2 Dim1 = 30 Dim2 = 10 Instancia 2
Lenguaje de Programación Java Profesor: Mauricio Martínez P. Programación Orientada a Objetos • Herencia • Clases Base y Derivadas • Herencia Simple y Múltiple Clase Base Persona Profesional Clase Base y Derivada Profesor Clase Derivada Prof_Contra Prof_Horas
Lenguaje de Programación Java Profesor: Mauricio Martínez P. Programación Orientada a Objetos • Herencia • El control de acceso Protegido • Referencias al constructor de la clase base (super) class Rectangulo { public Rectangulo(int d1, int d2) { super(d1, d2); } : public int area() { return Dim1*Dim2; } } class Figura { protected int Dim1; protected int Dim2; public Figura(int d1, int d2) { this.Dim1 = d1; this.Dim2 = d2; } : } Clase Base Clase Derivada
Lenguaje de Programación Java Profesor: Mauricio Martínez P. Programación Orientada a Objetos • Herencia • Instanciando clases derivadas • Clases finales Figura fig1; if (tipo = = “Rect”) { fig1 = new Rectangulo(5,10); } else if (tipo = = “Elip”) { fig1 = new Elipse(8,12); } Rectangulo rec1 = new Rectangulo(5,10); Elipse eli1 = new Elipse(8,12);
Lenguaje de Programación Java Profesor: Mauricio Martínez P. Programación Orientada a Objetos • Herencia • Clases abstractas Figura Dim1 Dim2 area() perimetro() abstract class Figura { protected int Dim1; protected int Dim2; : public abstract int area(); public abstract int perimetro(); } Rectangulo area() perimetro() Elipse area() perimetro()
Lenguaje de Programación Java Profesor: Mauricio Martínez P. Programación Orientada a Objetos class Rectangulo { : public int area() { return Dim1*Dim2; } public int perimetro() { return 2*(Dim1+Dim2); } public void dibuja(Graphics g) { : } public void grabar() { : } public void cargar(String pk) { : } } • Herencia • Interfaces interface Figura { public int area(); public int perimetro(); } Implementa interface Dibujable { public void dibuja(Graphics g); } Implementa interface Persistente { public void grabar(); public void cargar(String pk); } Implementa
Lenguaje de Programación Java Profesor: Mauricio Martínez P. Programación Orientada a Objetos • Polimorfismo • Sobrecarga de operaciones Sobrecarga del Operador + int + int = int float + float = float float + int = float String + String = String String + int = String Rectangulo + Rectangulo = Rectangulo String + Rectangulo = String
Lenguaje de Programación Java Profesor: Mauricio Martínez P. Programación Orientada a Objetos class Rectangulo { private int Dim1; private int Dim2; public Rectangulo(int d1, int d2) { Dim1 = d1; Dim2 = d2; } public Rectangulo(int dim) { Dim1 = Dim2 = dim; } public Rectangulo(String dime) { int dim = Integer.parseInt(dime); Dim1 = Dim2 = dim; } : } • Polimorfismo • Sobrecarga del constructor
Lenguaje de Programación Java Profesor: Mauricio Martínez P. Programación Orientada a Objetos • Polimorfismo • Sobrecarga de funciones class Formulas { public static double potencia(double bas) { : } public static double potencia(double bas, int exp) { : } public static double potencia(double base, double exp) { : } }
Lenguaje de Programación Java Profesor: Mauricio Martínez P. Programación Orientada a Objetos • Polimorfismo • Polimorfismo por medio de clases abstractas e interfaces class Rectangulo { : public int area() { return Dim1*Dim2; } } interface Figura { : public int area(); } Implementan class Elipse { : public int area() { return (int)(3.1416*Dim1*Dim2); } }
Lenguaje de Programación Java Profesor: Mauricio Martínez P. Programación Orientada a Objetos • Polimorfismo • Polimorfismo por medio de clases abstractas e interfaces Figura fig1; if (tipo = = “Rect”) { fig1 = new Rectangulo(5,10); } else if (tipo = = “Elip”) { fig1 = new Elipse(8,12); } int areaFig = fig1.area(); :