Вы находитесь на странице: 1из 5

Objetivo: identificar los principios de la programación orientada a objetos y su relación con la

plataforma Android en el desarrollo de aplicaciones para dispositivos móviles.

Objeto de estudio: desarrollo de software

Actividades de aprendizaje:

1.- Identificar los principios de la programación orientada a objetos. Relacionar esos principios
del paradigma de objetos con su aplicación móvil.

Es importante aclarar desde un principio la diferencia que existe entre programación


orientada a objetos y un lenguaje orientado a objetos.
La programación orientada a objetos es una “filosofía”, un modelo de programación,
con su teoría y su metodología, que conviene conocer y estudiar antes de nada. Un
lenguaje orientado a objetos es un lenguaje de programación que permite el diseño de
aplicaciones orientadas a objetos. Dicho esto, lo normal es que toda persona que vaya a
desarrollar aplicaciones orientadas a objetos aprenda primero la “filosofía” (o adquiera
la forma de pensar) y después el lenguaje, porque “filosofía” sólo hay una y lenguajes
muchos. En este documento veremos brevemente los conceptos básicos de la
programación orientada a objetos desde un punto de vista global, sin particularizar para
ningún lenguaje de programación específico.

Es muy importante destacar que cuando hacemos referencia a la programación orientada


a objetos no estamos hablando de unas cuantas características nuevas añadidas a un
lenguaje de programación. Estamos hablando de una nueva forma de pensar acerca del
proceso de descomposición de problemas y de desarrollo de soluciones de
programación.
La programación orientada a objetos surge en la historia como un intento para dominar
la complejidad que, de forma innata, posee el software. Tradicionalmente, la forma de
enfrentarse a esta complejidad ha sido empleando lo que llamamos programación
estructurada, que consiste en descomponer el problema objeto de resolución en
subproblemas y más subproblemas hasta llegar a acciones muy simples y fáciles de
codificar. Se trata de descomponer el problema en acciones, en verbos. En el ejemplo de
un programa que resuelva ecuaciones de segundo grado, descomponemos el problema
en las siguientes acciones: primero, pedir el valor de los coeficientes a, b y c; después,
calcular el valor del discriminante; y por último, en función del signo del discriminante,
calcular ninguna, una o dos raíces.
Como podemos ver, descomponemos el problema en acciones, en verbos; por ejemplo
el verbo pedir, el verbo hallar, el verbo comprobar, el verbo calcular…
La programación orientada a objetos es otra forma de descomponer problemas. Este
nuevo método de descomposición es la descomposición en objetos; vamos a fijarnos no
en lo que hay que hacer en el problema, sino en cuál es el escenario real del mismo, y
vamos a intentar simular ese escenario en nuestro programa.
Los lenguajes de programación tradicionales no orientados a objetos, como C, Pascal,
BASIC, o Modula-2, basan su funcionamiento en el concepto de procedimiento o
función. Una función es simplemente un conjunto de instrucciones que operan sobre
unos argumentos y producen un resultado. De este modo, un programa no es más que
una sucesión de llamadas a funciones, ya sean éstas del sistema operativo,
proporcionadas por el propio lenguaje, o desarrolladas por el mismo usuario.
3
En el caso de los lenguajes orientados a objetos, como es el caso de C++ y Java, el
elemento básico no es la función, sino un ente denominado precisamente objeto. Un
objeto es la representación en un programa de un concepto, y contiene toda la
información necesaria para abstraer: datos que describen sus atributos y operaciones
que pueden realizarse sobre los mismos.
La programación orientada a objetos es una nueva forma de pensar, una manera distinta
de enfocar los problemas. Ahí radica la dificultad de aprender un lenguaje totalmente
orientado a objetos, como es Java, sin conocer previamente los pilares de la
programación orientada a objetos. Hecha esta importante aclaración, conviene destacar
que Java, más que un lenguaje orientado a objetos, es un lenguaje de objetos. Java
incorpora el uso de la orientación a objetos como uno de los pilares básicos y
fundamentales del lenguaje. Esto constituye una importante diferencia con respecto a
C++. C++ está pensado para su utilización como lenguaje orientado a objetos, pero
también es cierto que con C++ se puede escribir código sin haber oído nada de la
programación orientada a objetos. Esta situación no se da en Java, dotado desde las
primeras etapas de su diseño de esta filosofía, y donde no cabe obviar la orientación a
objetos para el desarrollo de programas, por sencillos que éstos sean. Al contrario que
en C++, en Java nada se puede hacer sin usar al menos un objeto.

2.- Relacionar la arquitectura de la aplicación con patrones de diseño y sustentar esa relación en
base a la estructura básica de programación en una aplicación móvil para Android

La unidad funcional básica de una aplicación Android es la "Activity", el cual es un objeto de la


clase "android.app.Activity". Una "Activity" puede hacer muchas cosas, pero por si misma ella no
tiene presencia en la pantalla. Para otorgarle a tu "Activity" presencia en la pantalla y diseñar su
interfaz de usuario, tienes que trabajar con "View" y "ViewGroup", las cuales son las unidades
básicas de expresión de la interfaz de usuario en la plataforma Android.

Vistas

Una vista es un objeto cuya clase base es "android.view.View". Es una estructura de datos
cuyas propiedades almacenan el esquema y contenido para una determinada área rectangular
de la pantalla. Un objeto "View" manipula el dimensionamiento y esquema, realiza el pintado,
controla los cambios de foco, desplazamiento de áreas y teclado/gestos para el área de la
pantalla que representa.

La clase "View" sirve de base para los "widgets", que son un conjunto de subclases
implementadas completamente que dibujan elementos interactivos en la pantalla. Los "widgets"
manipulan sus propios dimensionamientos y pintado, de tal forma que tú puedes usarlos para
construir tus propias UI mucho más rápido. La lista de "widgets" disponibles incluye: "Text",
"EditText", "InputMethod", "MovementMethod", "Button", "RadioButton", "Checkbox" y
"ScrollView".

Grupos de vistas

Un "ViewGroup" es un objeto de la clase "android.view.Viewgroup". Como su nombre lo indica,


un grupo de vistas es un tipo especial de objeto "View", cuya función es contener y administrar
un conjunto subordinado de "View" y otros "ViewGroup". Los "ViewGroup" nos permiten agregar
una estructura a nuestras "UI" y así construir elementos de pantalla mucho más complejos que
puedan ser manipulados como un único elemento.

La clase "ViewGroup" sirve de clase base para crear esquemas, los cuales son un conjunto de
subclases implementadas completamente que provee de los tipos más comunes de elementos
de pantalla. Los esquemas nos entregan una forma de construir una estructura para un conjunto
de "View".

Un árbol jerárquico de UI

En la plataforma Android, tú puedes definir una "Activity" con UI usando un árbol de "View" y
nodos de "ViewGroup", tal como lo muestra el diagrama que está a continuación. El árbol puede
ser simple o complejo según tus necesidades, y puede ser construido usando un conjunto
predefinido de "widgets" y elementos de Android o tipos de "View" con características especiales
que tú hayas creado.

Para enlazar el árbol a la pantalla y así efectuar su visualización, nuestra actividad "Activity"
llama a sus método "setContentView()" y pasa la referencia una referencia al objeto del nodo
raíz. Una vez que el sistema Android tiene una referencia al objeto del nodo raíz, éste puede
trabajar directamente con el nodo para invalidar, medirlo y dibujar el árbol. Cuando tú "Activity"
se activa y recibe el foco, el sistema notifica a tu "Activity" y le solicita al nodo raíz que mida y
dibuje el árbol. Entonces, el nodo raíz le solicita a sus nodos hijos que se dibujen así mismo, a
su vez cada nodo de grupo de vistas del árbol es responsable de dibujar sus nodos hijos
directos.

Como se mencionó previamente, cada "ViewGroup" tiene la responsabilidad de medir su


espacio disponible, posicionar sus hijos dentro del esquema y llamar al método "Draw()" por
cada uno de sus hijos para que se dibujen a sí mismos. Los hijos podrían solicitar una ubicación
y tamaño específico al padre, pero es el objeto padre quien tiene la última decisión con respecto
a qué tan grande cada hijo puede ser.

LayoutParams: ¿Cómo especificar la posición y tamaño de un hijo?

Cada "ViewGroup" usa una clase anidada que hereda de "ViewGroup.LayoutParams". Esta
subclase contiene tipos de propiedades que definen el tamaño y posición de un hijo en
propiedades que son apropiadas para esa clase de "ViewGroup".

Cada subclase de "LayoutParams" tiene su propia sintaxis para asignar sus valores. Cada
elemento hijo debe definir un "LayoutParams" que sea apropiado para su padre, aunque éste
último podría definir un "LayoutParams" diferente para sus hijos.

Todos los incluyen ancho y alto. Muchos incluso tienen márgenes y contorno. Tú puedes indicar
un ancho y alto determinados, pero probablemente no lo harás de manera frecuente. Lo más
probable es que dejarás que tu vista se auto dimensione al tamaño de sus contenidos o tan
grande como el objeto que lo contiene lo permita.

3.- Identificar la jerarquía de clases en relación al tema específico de cada estudiante. Explique
la jerarquía de clases y su relación con el código de su aplicación

Para la creación de la Interfaz de Usuario con Pestañas, vamos a crear y utilizar los siguientes
componentes Android:
● CoordinatorLayout
● AbbBar
● ToolBar
● TabLayout
● ViewPager
● Fragments
● FragmentsPagerAdapter

Un Contenedor principal un CoordinatorLayout es un tipo de layout que nos va a facilitar la tarea


de coordinar los componentes que pongamos en su interior, sobre todo en las tareas de
animación.

Entonces lo siguiente que haremos será implementar la Appbar. Recordaros que la Appbar es
básicamente un contenedor vertical (un LinearLayout) donde implementaremos a su vez dentro
de ella, la barra de herramientas (Toolbar) y, debajo de esta, las pestañas o Tabs mediante el
componente TabLayout.
Debajo del bloque de la Appbar, lo que haremos será poner un ViewPager. Este componente
será el encargado de gestionar el cambio de secciones cuando hagamos el deslizamiento
horizontal (Swipe) en la pantalla.

El ViewPager va a necesitar la ayuda de un adaptador, que será el encargado de proporcionar al


ViewPager la página que tenga que mostrar. Un ViewPager funciona mayormente con
Fragments para facilitar la gestión del ciclo de vida (LifeCycle) de cada página.

4.- Referencias en relación a la aplicación de estándares de desarrollo de aplicaciones de


software

El estándar que se usó en el desarrollo de está aplicación fueron usados basada en Native RMA
(Native Resident Mobile Application) O Aplicación Móvil Residente Nativa. Se trata de las
aplicaciones que se instalan en el dispositivo que se se han desarrollado de forma específica
para una determinada plataforma conforme al SDK (Software Development Kit) correspondiente.

Este tipo de aplicaciones se caracterizan por:


● Tener un desarrollo para la plataforma destino
● Disponer de un lenguaje de programación específico para cada plataforma
● Tener un conjunto de herramientas de desarrollo recomendadas por el fabricante
● Explotar las capacidades nativas del dispositivo

Desde un punto de vista de los costes de desarrollo está opción es un desarrollo completo y
recursos específicos por plataforma destino donde se publicara la aplicación.

Referencias
Anon, (2017). [online] Available at: http://luis.izqui.org/resources/ProgOrientadaObjetos.pdf
[Accessed 18 Jul. 2017].

Anon, (2017). Documento de los Estándares. [online] Available at:


http://www.euskadi.eus/contenidos/informacion/guia_estandares_tecnologicos/es_687
6/adjuntos/Guia%20tecnica%20-%20Desarrollo%20soluciones%20moviles.pdf
[Accessed 18 Jul. 2017].

Developer.android.com. (2017). Object | Android Developers. [online] Available at:


https://developer.android.com/reference/java/lang/Object.html [Accessed 18 Jul. 2017].

Developer.android.com. (2017). TabLayout | Android Developers. [online] Available at:


https://developer.android.com/reference/android/support/design/widget/TabLayout.html
[Accessed 18 Jul. 2017].

GitHub. (2017). codepath/android_guides. [online] Available at:


https://github.com/codepath/android_guides/wiki/Google-Play-Style-Tabs-using-
TabLayout [Accessed 18 Jul. 2017].

Вам также может понравиться