Mostrando entradas con la etiqueta POO. Mostrar todas las entradas
Mostrando entradas con la etiqueta POO. Mostrar todas las entradas

miércoles, 23 de febrero de 2022

Presentación POO 2

1 comentario :


En el tema anterior se establecieron los conocimientos previos que se tienen para dar seguimiento durante la presente materia. Ahora, a llegado el momento de verificar cuáles son las expectativas que tienes sobre la materia.

Cómo se trabaja en Google

Iniciemos con una pregunta, ¿conoces la forma en que trabajan las empresas de software?, NO, a continuación te lo muestro en vídeos.





NOTA: Puedes hacer clic aquí para conocer las mejores empresas para laborar en el mundo. Verifica cuántas son del área de TI. Los datos son obtenidos de: greatplacetowork.com.


Expectativas de la materia

Ahora que ya conoces los temas, identificaste la forma de trabajar de las empresas transnacionales del software, indica que expectativas tienes de la materia.

Actividad 3Valor


El estudiante de la materia de POO será competente para expresar ideas y conceptos mediante representaciones lingüísticas, matemáticas o gráficas, asumiendo una actitud constructiva, congruente con los conocimientos y habilidades con los que cuenta dentro de distintos equipos de trabajo, de tal forma que en la elaboración de un mapa mental donde plasme sus conocimientos previos sobre la materia y sobre el vídeo de la forma de trabajo en google, de tal forma que obtenga por lo menos un 80 de conformidad con los criterios de la lista de cotejo 2.
El estudiante en plenaria coordinada por el docente, hará una recapitulación de lo visto en la sesión anterior para conectar sus conocimientos previos con los que se esperan de este módulo. Posteriormente el estudiante elaborará un informe con sus expectativa del módulo.
2%


Lista de Cotejo 2
#CriterioCumple (S/N)Valor
1
Participa en la plenaria indicando sus puntos de vista

10%
2
Indica como esta materia puede apoyar a su futuro.

20%
3
Indica su punto de vista sobre la forma de trabajo en Google.

10%
4
Argumenta si le gustaría o no trabajar en un empresa de desarrollo de software. 

10%
5
Realiza crítica constructiva sobre los puntos de vista de sus compañeros (por lo menos 1).

20%
6
Documenta su participación en un documento con formato de procesador de texto.

30%

viernes, 4 de septiembre de 2015

1.5. Ciclos de vida

59 comentarios :
El ciclo de vida del software, o también denominado ciclo de vida del desarrollo del software, es el proceso que se sigue, a manera de guía, para planificar, desarrollar, probar, implementar y dar seguimiento, para su mejora, al software.

El ciclo de vida del software se origina con la premisa de obtener un producto de calidad que cumpla con las necesidades del cliente y por otra parte, tratar en lo posible, evitar la inserción de errores. Este se divide en etapas, de tal forma que cada una de ellas pueda ser comprendida y validada, siguiendo la filosofía de divide y vencerás, esto debido a que el desarrollo del software es una tarea compleja y que involucra a diferentes participantes, ya sea solo empresa cliente y desarrolladores, pero también a los usuarios externos del mismo.

Existen diferentes metodologías para llevar a cabo el ciclos de vida del software, cada una con ventajas y desventajas, pero generalmente todos cuentan con las siguientes etapas, aunque su orden y repetición dependen de cada una de dichas metodologías:
  • Definir objetivos: es importante determinar lo que se espera del proyecto y como beneficiará a la empresa cliente.
  • Análisis de requerimientos y su factibilidad: una vez que se ha decidido construir el software, es necesario recopilar toda la información posible para examinarla y plasmar los requerimientos del cliente, verificando cualquier restricción o limitante que se pueda aplicar, y de esta forma indicar si es factible o no su implementación.
  • Diseño general: se deben tener identificados los requerimientos globales de la arquitectura de la aplicación, desde el hardware necesario, los componentes de red, hasta verificar la interacción que se tendrá con los otros sistemas, ya sean sistemas de software o no, de la empresa.
  • Diseño detallado: permite definir de una forma más precisa las características de cada submódulo del software a desarrollar.
  • Programación: en esta etapa se transforman los elementos diseñados, que se generaron de los requerimientos, mediante el empleo de un lenguaje de programación. En algunas metodologías se puede programar e implementar el módulo de código.
  • Prueba de unidad: permite realizar pruebas sobre cada módulo de código de forma particular o individual, con lo cual es posible verificar si cumple con las especificaciones indicadas en los requerimientos.
  • Pruebas de integración: cada uno de los módulos debe interactuar con otros, por lo cual, esta prueba verifica que estos mantengan la comunicación que se esperaba sin errores.
  • Prueba beta: una vez que las pruebas de integración han sido superadas, el software deberá implementarse en un ambiente que simule la forma de trabajo en la empresa, permitiendo identificar posibles errores no detectados en las pruebas realizadas. Por otra parte permite que garantizar que el software cumpla los requerimientos originales que se establecieron al inicio del ciclo de vida. Cabe señalar que el software puede ser implementado en la empresa y utilizado por algunos usuarios de la misma.
  • Documentación: como su nombre lo indicas, esta esta etapa permite llevar un control documentado sobre la forma de trabajo y codificación del software; lo que permitirá que los usuarios tengan una guía de uso y, por otra parte, cuando se requiera de una modificación o actualización se tenga la información necesaria.
  • Implementación: en esta etapa, finalmente, se instalará el software en el ambiente real de la empresa.
  • Mantenimiento: esta etapa permite realizar correcciones al software, por errores no detectados en las fases previas. También permite indicar si el software requiere de algunas funcionalidades previas no indicadas en los requerimientos.




jueves, 27 de agosto de 2015

1.4. Herencia y otros conceptos de la POO (java)

No hay comentarios :

Herencia

Consiste en retransmitir los atributos y métodos de una clase a otra, generalmente se implementa cuando se tienen dos o más clases que son diferentes, pero que comparten atributos o métodos en común, por lo cual se creará una clase que heredará estos atributos a las diversas clases, aunque cada una de estas puede tener otros atributos o métodos propios.

Realizando una analogía de la programación con la vida cotidiana, se puede decir que una persona puede heredar de su padre el color de piel, la forma de la cara; por otra parte de su madre puede heredar el color del pelo y la forma de la boca, inclusive de alguno de los abuelos puede heredar el color de ojos u otras características; sin embargo también la persona puede tener rasgos personales propios, como puede ser la estatura o la forma de la nariz, etc.

Ejemplo de herencia


Este es el concepto de herencia, sin embargo, en java no se puede tener múltiples herencias; es decir, dos clases no pueden heredar atributos a la misma clase (papá y mamá no pueden heredar al mismo hijo, solo uno u otro).

Ejemplo de herencia en java
 
La herencia, en los diagramas, esta definida por flechas de punta de triángulo vacías, lo cual sugiere que los atributos y métodos de la clase superior se pasan a las clases inferiores. Aunque cada subclase puede tener sus propios atributos y métodos.

Ejemplo de diagrama de clases con herencia

Programando la herencia

Para indicar que una clase esta solicitando la herencia de otra, se emplea la palabra reservada extends.

public class Automovil extends Vehiculo{

}

Para aplicar este concepto, generemos un diagrama que incluya herenciay realicemos su codificación en java.


1.3. Escribiendo un Programa Orientado a Objetos

No hay comentarios :

Codificar la clase con java


A continuación se procederá a codificar la clase Alumno descrita en la figura anterior:

public class Alumno {
    private String matricula;
    private String nombre;
    private String telefono;
    private String correo;

    public Alumno() {
    
    }

    public Alumno(String matricula, String nombre, String telefono, String correo) {
        this.matricula = matricula;
        this.nombre = nombre;
        this.telefono = telefono;
        this.correo = correo;
    }

    public String getMatricula() {
        return matricula;
    }

    public void setMatricula(String matricula) {
        this.matricula = matricula;
    }

    public String getNombre() {
        return nombre;
    }

    public void setNombre(String nombre) {
        this.nombre = nombre;
    }

    public String getTelefono() {
        return telefono;
    }

    public void setTelefono(String telefono) {
        this.telefono = telefono;
    }

    public String getCorreo() {
        return correo;
    }

    public void setCorreo(String correo) {
        this.correo = correo;
    }
    
    public String imprimir(){
        return "matricula: " + this.matricula +
                "\nNombre: " + this.nombre +
                "\nTeléfono: " + this.telefono +
                "\nCorreo: " + this.correo;
    }
    
}

Analicemos el código por partes:
  • Primero: el nombre de la clase:
    public class Alumno
     
  • Segundo: los atributos se toman de la clase indicando primero el modificador (public, private o protected), después el tipo de dato y por último el nombre del atributo.
        private String matricula;
        private String nombre;
        private String telefono;
        private String correo;
     
  • Tercero: los métodos constructores, estos son los encargados de inicializar el objeto, pueden existir varios, con la restricción de que se debe de cambiar el orden de los tipos de datos de los argumentos. Generalmente se declara uno vacío. En caso de no declarar un constructor, java declara automáticamente uno vacío. Los constructores deben tener el mismo nombre que la clase:
        public Alumno() {
        
        }
    
        public Alumno(String matricula, String nombre, String telefono, String correo) {
            this.matricula = matricula;
            this.nombre = nombre;
            this.telefono = telefono;
            this.correo = correo;
        }
    
     
  • Cuarto: los métodos get y set, estos son los encargados de regresar y de asignar los datos respectivamente. Estos métodos se nombran colocando el get o set y después el nombre del atributo con el cual trabajo; generalmente se tiene un get y un set por atributo.
    • Los métodos get deben tener  un return el cual indica que regresará un valor, el tipo de dato que regrese debe coincidir con el tipo de dato del atributo.
          public String getMatricula() {
              return matricula;
          }
      
    • Por su parte los métodos set serán de tipo void, y tiene como función llenar el atributo con el valor recibido como parámetro, el cual debe tener el mismo tipo de dato que el atributo
          public void setNombre(String nombre) {
              this.nombre = nombre;
          }
      
  • Quinto: los métodos propios, estos métodos son desarrollados por el usuario y pueden ser tipo deseado (o no tener tipo - void). Tienen las mismas reglas que los otros métodos en su declaración.Y si se declara el método de algún tipo de dato, este deberá tener un return.
        public String imprimir(){
            return "matricula: " + this.matricula +
                    "\nNombre: " + this.nombre +
                    "\nTeléfono: " + this.telefono +
                    "\nCorreo: " + this.correo;
        }
    


lunes, 24 de agosto de 2015

1.2. Lenguajes Orientados a Objetos

No hay comentarios :

Lenguajes de Programación Orientados a Objetos

Así como existen diversos lenguajes de programación estructurada, en el paradigma orientado a objetos no es la excepción.

Simula, desarrollado en 1967, es considerado como el primer lenguaje de programación que presenta las principales características de un lenguaje orientado a objetos. Como su nombre lo indica, fue creado con la finalidad de construir programas de simulación, en donde los objetos son la representación de la información más importante. Sin embargo, Smalltalk es considerado el estandarte, ya que con este lenguaje es con el que se desarrollo una gran parte de la teoría de la programación orientada a objetos.

A continuación se presenta una lista enunciativa, pero no limitativa, de algunos otros lenguajes de programación orientado a objetos:

Java: El lenguaje a emplear

Java es un lenguaje de programación orientado a objetos, de propósito general (no se limita a un solo propósito) que fue diseñado específicamente para tener mínimas dependencias de implementación como fuera posible. Su finalidad es permitir que los programadores de aplicaciones escriban el solo una vez programa, pero lo puedan ejecutar en cualquier sistema operativo o dispositivo (conocido en inglés como WORA, o "write once, run anywhere"), lo cual implica que el código que esta corriendo en un sistema operativo, puede ejecutarse en otro sin necesidad de realizar modificaciones al código fuente.

Representar una clase

Para representar una clase, se pueden emplear diversas simbologías, sin embargo, para efectos de este submódulo se empleará la nomenclatura de UML (Este tema será tratado más adelante).

A continuación se presenta el diagrama de una clase denominada Alumno, la cual tiene como atributos matricula, nombre, telefono y correo y como método imprimir  los datos.


La clase tiene las siguientes características principales, basadas en un javabean:
  • Un nombre: Alumno. Por recomendación las clases deben iniciar con una letra en mayúscula.
  • Los atributos: matricula, nombre, telefono y correo. Por recomendación los atributos deben iniciar con letra en minúscula.
  • Los métodos: los métodos son las acciones, en este caso tenemos los siguientes:
    •  Alumno(). Constructor vacío.
    • Alumno(matricula: String, ...). Constructor con parámetros (no es parte del javaBean).
    • get... y set ... Definen la forma en que se asignarán los datos a la clase (set) y la forma en que se recuperarán los mismos (get). Un método get permite obtener los datos guardados en el atributo correspondiente; se debe indicar el tipo de dato a regresar. Por su parte set permite "llenar" los atributos de la clase con su respectivo valor, por lo cual debe asignarse el parámetro a recibir (variable) entre los paréntesis del método.
    • imprimir. método personal que permitirá mostrar en pantalla los datos del alumno. No es parte del javaBeans. Para realizar esta salida se recomienda el método toString().
  • Lo modificadores de acceso de los elementos:
    •  private (privado): se representa con un signo menos (-). Este indica que al valor del elemento solo se puede acceder desde la misma clase. Se recomienda que los atributos sean privados.
    • public (público): se representa con un signo de más (+). Este indica que el elemento puede ser accedido desde cualquier otra clase. Se recomienda que los métodos sean públicos.
    • protected (protegido): se representa con un signo de número (#). Este indica que el elemento so puede accedido desde la misma clase o por clases heredadas (derivadas).

1.1. Introducción a la POO

No hay comentarios :

La Programación Orientada a Objetos (POO)

Es un paradigma de programación basado en instanciar objetos a partir de clases para su posterior uso, es decir crear objetos a partir de moldes (clases), con los cuales se pueden desarrollar aplicaciones y programas de computadora. Algunas características de este tipo de programación son la herencia, la modularidad, el polimorfismo, y el encapsulamiento.

El uso de la POO se popularizó en los inicios de la década de 1990, aún cuando sus orígenes son anteriores a esa fecha. Por lo cual, actualmente, existe una gran variedad de lenguajes de programación que la implementan.

Su uso a venido a disminuir la cantidad de desarrollos basados en el paradigma de programación estructurado, sin embargo el código generado para las aplicaciones basadas en POO contienen varios fragmentos de código que están basados en las programación estructurada.

La POO tiene su origines con el lenguaje de programación simula 67, un lenguaje empleado en la realización de simulación, aunque su gran auge se debe particularmente al la extensión del lenguaje de programación C: C++. C++ permitió crear aplicaciones con enfoque hacia entornos gráfico lo que popularizo su uso.

Ahora que ya se tiene una primera impresión sobre la POO, es importante
identificar algunos de sus principales conceptos, mismos que se listan a
continuación:

  1. 1. Clase: puede definirse como una plantilla que determina las propiedades (atributos) y comportamientos (métodos) que puede tener un objeto en particular. 
  2. 2. Objeto: es la instancia de una clase, es decir la entidad que poseerá los atributos y métodos que se hayan definido en la clase.
  3. 3. Atributos: son las características que posee una clase. 
  4. 4. Visibilidad: es el ámbito sobre el que pueden trabajar los atributos y métodos. 
  5. 5. Mensaje: es una comunicación dirigida hacia un objeto, que le indica que ejecute uno de sus métodos con ciertos parámetros asociados al evento que lo generó. 
  6. 6. Métodos: son las acciones que puede realizar una clase, generalmente ejecutar una de estas acciones modificará las características del objeto, o inclusive enviar un mensaje a otro sistema. 
  7. 7. Herencia: consiste en retransmitir los atributos y métodos de una clase a otra, generalmente se implementa cuando se tienen dos o más clases que son diferentes, pero que comparten atributos o métodos en común, por lo cual se creará una clase que heredará estos atributos a las diversas clases, aunque cada una de estas puede tener otros atributos o métodos propios.

Entonces, las clases son moldes que permiten crear (instanciar) diferentes objetos, siempre y cunado estos mantengan ciertas características de la clase, pero se permite modificar el valor de la característica. Por ejemplo, si se considera una persona como una clase, esta puede tener la característica de altura, entonces al crear a los objetos Juan y Pedro, estos deberán tener la característica de altura, pero cada uno puede tener asignado un valor diferente para la altura; Juan puede medir 1.70m, mientras que Pedro 1.85m.

Para que quede un poco más claro esto de la POO realicemos una analogía que permita comparar la POO con un pastel.

Cuando se desea preparar un pastel (el objeto), generalmente se requiere de un molde (la clase), la cual tendrá diferentes características (atributos), como podrían ser forma, capacidad, altura, grosor y sabor (no del molde, sino de los ingredientes), entre otros. Por lo tanto, si el molde se define como circular, no podremos obtener pasteles cuadrados, pero aún cuando no podemos modificar la capacidad del molde, si vertemos menos masa, si se podría obtener un pastel menos alto. Por último, el pastel puede tener diferentes acciones (los métodos), por ejemplo revolver ingredientes, amasar, cocinar, desmoldar y decorar, entre otros.

En la siguiente figura se representa gráficamente lo expuesto.



NOTA: Durante el tema de herencia podremos ver a más profundidad estos conceptos, ya que en este ejemplo se toma al molde como clase, pero como existen diferentes tipos de moldes, el molde por si mismo es un objeto.

lunes, 10 de agosto de 2015

Analiza y Diseña Sistemas

No hay comentarios :

Competencia General


El alumno del submódulo "desarrolla software de aplicación utilizando programación orientada a objetos" será competente en el análisis y diseño de sistemas, utilizando la metodología de la programación orientada a objetos, aplicando distintos instrumentos o técnicas de recolección de datos para conocer las necesidades del cliente cuando estas se desconocen.


Forma de Evaluar
Apertura
Actividad Evidencia Ponderación
A1. Presentación del módulo. La participación del alumno /
Lista de asistencia
2%
A2. Los conocimientos previos. El mapa elaborado / Lista de
cotejo
2%
A3. Un vídeo motivacional. La participación del alumno /
Lista de asistencia
1%
A4. Expectativas del módulo. El informe elaborado / Lista de
asistencia
1%
Desarrollo
Actividad Evidencia Ponderación
A5. Los lenguajes de programación orientados a objetos. El reporte elaborado / Lista de
asistencia
5%
A6. Primeros programas orientados a objetos.El instrumento registrado /
Lista de cotejo
15%
A7. Conceptos avanzados de la POO.El reporte realizado / Programas desarrollados/ Rúbrica15%
A8. Introducción al análisis y diseño.El instrumento registrado / El vídeo realizado / Lista
de cotejo
5%
A9. Documentación del análisis y diseño. El programa desarrollado /
Lista de cotejo
30%
Cierre
Actividad Evidencia Ponderación
A10. Ejercicios de POOLos ejercicios resueltos / Lista de cotejo10%
A11. Caso práctico sobre diseño de diagramas.El diseño elaborado / Rúbrica10%
A12. Portafolio de evidencia.Portafolio de evidencias integrado / Lista de cotejo4%

miércoles, 5 de agosto de 2015

Presentación POO

45 comentarios :

Conocer las competencias a lograr permite que el alumno, desde un inicio, tenga un panorama que le permita identificar "hacia donde se desea llegar" en la materia de Programación Orientada a Objetos. Por ende, a continuación se muestran dichas competencias:



Actividad 1 Valor


El estudiante de la materia de POO será competente para expresar ideas y conceptos mediante representaciones lingüísticas, matemáticas o gráficas, asumiendo una actitud constructiva, congruente con los conocimientos y habilidades con los que cuenta dentro de distintos equipos de trabajo, de tal forma que en la generación de preguntas y respuestas por medio de un blog pueda aporta puntos de vista con apertura y considera los de otras personas de manera reflexiva.

El estudiante participará aportando, expresando sus ideas, comentando y aclarando dudas sobre la presentación del submodulos; donde se enfatizarán las competencias a lograr, las actividades de aprendizaje a desarrollar, las evidencias, tiempo del curso, forma de evaluación, valores y actitudes, obteniendo por lo menos un 80 de conformidad con los criterios de la lista de cotejo 1.
2%


Lista de Cotejo 1
#CriterioCumple (S/N)Valor
1
Responde las preguntas indicadas por el docente

20
2
Responde por lo menos a una pregunta de las realizadas por sus compañeros. 

20
3
Genera las respuestas en un tiempo no mayor a 1 día. 

20
4
Emplea un lenguaje "técnico", excluyendo palabras altisonantes. 

20
5
Realiza crítica constructiva de las preguntas a las que da respuesta.  

20


Actividad 2Valor


El estudiante de la materia de POO será competente para expresar ideas y conceptos mediante representaciones lingüísticas, matemáticas o gráficas, asumiendo una actitud constructiva, congruente con los conocimientos y habilidades con los que cuenta dentro de distintos equipos de trabajo, de tal forma que en la elaboración de un mapa mental donde plasme sus conocimientos previos sobre la materia, de tal forma que obtenga por lo menos un 80 de conformidad con los criterios de la lista de cotejo 2.
El estudiante elaborará un mapa mental, con el propósito de identificar la realidad del nivel de conocimientos del grupo con respecto al tema, con base en lo señalado durante el encuadre previo.
2%


Lista de Cotejo
#CriterioCumple (S/N)Valor
1
El mapa mental emplea más contenido gráfico que texto.

25%
2
El mapa está estructurado de tal forma que es fácil identificar sus secciones.

25%
3
El mapa mental es generado empleando una herramienta tecnológica. Te puedo recomendar bubbl.us

25%
4
Las imágenes que se incluyen en el mapa mental identifican los conceptos que se desean representar.

25%

viernes, 3 de julio de 2015

Programación Orientada a Objetos

No hay comentarios :