lunes, 16 de mayo de 2022

Gestión de información por medio de bases de datos

Gestión de información por medio de bases de datos

Las bases de datos son una buena opción para almacenar datos los cuales los usuarios desean modificar de forma proactiva, también para almacenar contraseñas y formularios, para las aplicaciones de hoy en día estas funcionalidades solo se encuentran en bases de datos, gestionar la información de otras formas no es tan eficiente como organizarla en una base de datos confiable, y Android se conecta de forma "sencilla" a estas bases de datos y permite crear aplicaciones aprovechando estas funcionalidades.

Las principales utilidades que ofrece son las siguientes:

  • Agrupar y almacenar todos los datos de la empresa en un único lugar.
  • Evitar la redundancia y mejorar la organización de nuestra actividad.
  • Conectar los datos de operaciones, facturación e interacciones con cada cliente o potencial.
  • Activar campañas de marketing o tareas.

Si una Base de Datos se gestiona adecuadamente, la organización obtendrá diferentes ventajas. Aumentará su eficacia, habrá trabajos que se realicen con mayor rapidez y agilidad debido a la simplificación de los mismos, podremos mejorar la seguridad de los datos que almacenamos, y con todos estos factores, maximizaremos los tiempos y por tanto, se producirá una mejora en la productividad.

domingo, 15 de mayo de 2022

Ventajas de SQLite

Ventajas de SQLite


1.  La principal ventaja de SQLite es que es una base de datos embebida en la aplicación. Por lo tanto, no se necesita instalación, mantenimiento, configuración, etc.

2. Se puede acceder al contenido y actualizarlo mediante potentes consultas SQL, lo que reduce en gran medida la complejidad del código de la aplicación.

3. Los paquetes android.database y android.database.sqlite ofrecen una alternativa de mayor rendimiento donde la compatibilidad de la fuente no representa mayor problema, aprovechando los recursos.

4. Permite el acceso de múltiples aplicaciones a la misma base de datos.

5. Esta basada en archivos, lo que permite que sea fácil de utilizar y configurar.






viernes, 22 de abril de 2022

Relación entre Interfaz Gráfica y paradigma de programación orientada a objetos.

Relación entre Interfaz Gráfica y paradigma de programación orientada a objetos.

La interfaz gráfica esta compuesta de diversos elementos con los que el usuario puede interactuar, estos le transmiten información desde la aplicación hacia al usuario, e igualmente el usuario puede ingresar información hacia la aplicación de forma controlada permitiendo la debida ejecución del programa. 

Entonces, se puede interpretar que los elementos encontrados dentro de la Interfaz Gráfica de Usuario (GUI por sus siglas en inglés Graphical User Interface) son objetos con funciones específicas, estos objetos pueden ser conceptualizados como cualquier otro objeto dentro de la programación orientada a objetos, por lo tanto estos mismos objetos tendrán métodos y atributos.

Se puede analizar que el diseño de la GUI, emplea el uso de la abstracción y conceptualización de la Programación Orientada a Objetos POO, para así poder representar elementos, que pueden tomar y modificar los atributos de otros objetos del programa, así entonces, una clase Edit Text puede ser el valor a asignar para un atributos específico de un objeto de una clase, y esto se hace por medio de un método que se ejecuta por un Botón, que es a su vez un objeto de la clase Button.

Es por lo tanto que las relaciones entre GUI y POO se pueden tomar, como que la GUI es una forma gráfica de objetos de diferentes clases preconstruidas, que permiten al usuario interactuar con el flujo del programa.

Ventajas del entorno de desarrollo propuesto por Android Studio

 Ventajas encontradas de Android Studio:

1. Editor de diseño que muestra una vista previa de los cambios realizados directamente en el archivo XML:

La principal ventaja es que Android Studio permite ver en tiempo real el diseño realizado y también explorar el código generado mediante el archivo XML. Así el usuario puede editar de forma gráfica la Interfaz Gráfica de Usuario (GUI) a placer, ajustando los elementos de forma sencilla y en caso de ser necesario haciendo ajustes precisos por medio de código empleando la información que reposa dentro del archivo XML.

2. Vista previa en diferentes dispositivos y resoluciones.

El programa tiene la capacidad de poder mostrar como será el diseño previó según el tamaño y resolución de pantalla de diferentes dispositivos compatibles con Android, en caso de que no se encuentre el dispositivo deseado, es posible crear una interfaz personalizada con el tamaño de pantalla y resolución deseados; así mismo es posible configurar este perfil y guardarlo para futuros usos.

3. Permite ejecutar las compilaciones de forma muy rápida, y así poder comprobar en el momento los fallos y mejoras de la aplicación

Android Studio permite que se pueda compilar el programa ya sea empleando un emulador de un dispositivo Android, o empleando un dispositivo móvil conectado al equipo y realizando la depuración mediante USB. Esto permita que se pueda realizar correcciones del programa de forma inmediata y observar los resultados obtenidos.

Almacenamiento y recuperación de información

El código de la actividad es el siguiente:

import androidx.appcompat.app.AppCompatActivity;
import android.content.Context;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.View;

public class MainActivity extends AppCompatActivity {

Integer puntuacion1, puntuacion2;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

SharedPreferences preferencias =
getSharedPreferences("datos", Context.MODE_PRIVATE);
String puntaje1 =
String.valueOf(preferencias.getInt("puntos1", 0));
String puntaje2 =
String.valueOf(preferencias.getInt("puntos2", 0));

}

public void manejar1(View view) {
SharedPreferences preferencias =
getSharedPreferences("datos", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = preferencias.edit();
puntuacion1 += 1;
editor.putInt("puntos1", puntuacion1);
editor.commit();
}

public void manejar2(View view) {
SharedPreferences preferencias =
getSharedPreferences("datos", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = preferencias.edit();
puntuacion2 += 1;
editor.putInt("puntos2", puntuacion1);
editor.commit();
}
}

El código anterior se encarga de sumar una cantidad de puntos a las variables Puntos1 y Puntos2, dependiendo del método que se emplee, ya sea manejar1 o manejar2.

Sin lugar a duda la mayor utilidad de la clase Shared Preferences es poder almacenar valores dentro de variables a lo largo del tiempo, sin temer que estos valores vayan a perderse, la persistencia es lo que busca esta clase y donde radica su propósito.


Creación de interfaz gráfica

 El código de la actividad es el siguiente:

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">

<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Text View - Ejemplo"
android:textSize="18sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.168"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.087" />

<EditText
android:id="@+id/editText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ems="10"
android:inputType="textPersonName"
android:text="Edit Text - Ejemplo"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.217"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.161" />

<RadioGroup
android:id="@+id/radioGroup"
android:layout_width="315dp"
android:layout_height="100dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.447"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.299">

<RadioButton
android:id="@+id/radioButton3"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Radio Button - Ejemplo 1" />

<RadioButton
android:id="@+id/radioButton4"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Radio Button - Ejemplo 2" />

<RadioButton
android:id="@+id/radioButton5"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Radio Button - Ejemplo 3" />
</RadioGroup>

<CheckBox
android:id="@+id/checkBox"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Check Box - Ejemplo 1"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.18"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.462" />

<CheckBox
android:id="@+id/checkBox2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Check Box - Ejemplo 2"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.18"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.543" />

<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.52"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.645" />

</androidx.constraintlayout.widget.ConstraintLayout

También se declara las variables de la siguiente manera:

package com.example.gui;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.RadioButton;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {

TextView textView;
EditText editText;
RadioButton radioButton1;
RadioButton radioButton2;
RadioButton radioButton3;
CheckBox checkBox1;
CheckBox checkBox2;
Button button;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

textView = (TextView) findViewById(R.id.textView);
editText = (EditText) findViewById(R.id.editText);
radioButton1 = (RadioButton) findViewById(R.id.radioButton1);
radioButton2 = (RadioButton) findViewById(R.id.radioButton2);
radioButton3 = (RadioButton) findViewById(R.id.radioButton3);
checkBox1 = (CheckBox) findViewById(R.id.checkBox1);
checkBox2 = (CheckBox) findViewById(R.id.checkBox2);
button = (Button) findViewById(R.id.button);

}

}

El resultado del código es el anterior:


La interfaz gráfica y sus elementos asociados son importantes puesto que facilitan la interacción del usuario con el código programado, son una mecanismo sencillo para transmitir información al usuario, así como permitirle al mismo transmitir información a la aplicación de una manera controlada y con ciertas restricciones que permitan el adecuado funcionamiento del programa.

Tipos de estructuras repetitivas de programación.

El código de la actividad es el siguiente:

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.widget.TextView;
import org.w3c.dom.Text;

public class MainActivity extends AppCompatActivity {

int numero;
TextView tvResultado, tvResultado2, tvResultado3;
String salida;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

numero = 0;
salida = "";
tvResultado = (TextView) findViewById(R.id.tvResultado);
tvResultado2 = (TextView) findViewById(R.id.tvResultado2);
tvResultado3 = (TextView) findViewById(R.id.tvResultado3);

while (numero<=20) {
numero += 1;
String cadena1 = String.valueOf(numero);
salida = salida + " " + cadena1;
}
tvResultado.setText(salida);

salida = "";

for (int i = 0; i < 16; i += 2){
String cadena2 = String.valueOf(i);
salida = cadena2 + "-";
}
tvResultado2.setText(salida);

salida = "";
numero = 0;

do{
numero += 1;
String cadena1 = String.valueOf(numero);
salida = salida + " " + cadena1;
}while (numero <= 15);
tvResultado3.setText(salida);

}
}

Las estructuras repetitivas son parte fundamental de casi cualquier programa, puesto que son importantes para recorrer vectores, realizar tareas repetitivas, iterar procesos y similares. Las estructuras permiten automatizar recorridos y son un sinónimo de automatización de cualquier proceso.