diumenge, 15 de novembre del 2015

Exercici seriació C#

Seriar una llista de cotxes:

Per seriar:
List<Cotxe> cotxes = new List<Cotxe>();
            Cotxe c1 = new Cotxe();
            c1.marca = "fmesasc";   
            c1.model ="FMESASC";
            c1.any =1999;
            cotxes.Add(c1);

            Cotxe_seriar objecteQueVolemSeriar = new Cotxe_seriar();
            objecteQueVolemSeriar.Cotxes = cotxes;
            Seriador seriador = new Seriador();
            seriador.SeriaObjecte("outputFile.txt", objecteQueVolemSeriar);
Per deseriar:
            List<Cotxe> cotxes = new List<Cotxe>();
            Cotxe_seriar objecteQueVolemSeriar = new Cotxe_seriar();
            objecteQueVolemSeriar.Cotxes = cotxes;
            Seriador seriador = new Seriador();
            objecteQueVolemSeriar = seriador.DeSeriaObjecte("outputFile.txt");
            cotxes = objecteQueVolemSeriar.Cotxes;
            foreach (Cotxe c in cotxes) {
                Console.WriteLine("Marca {0}, model {1}, any {2} ", c.marca, c.model, c.any);
            }
             Console.ReadLine();

Output file es crearà a Cotxe\bin\Debug.
Descarregar aquí.


Seriar una lista d'insectes:

//Seriem els max_insectes insectes continguts a data i els recuperem deseriant-los a data2
Insecte[] data2 = new Insecte[max_insectes];

//Seriem els insectes al fitxer "fitxer_insectes"
for (int i = 0; i < max_insectes; i++) {
try {
Insecte.SeriarInsecte("fitxer_insectes", data[i]);
}
catch (Exception e) {
Console.WriteLine("Error al seriar l'insecte #{0}: {1}", i+1, e);
}
}

//Deseriem els insectes del fitxer "fitxer_insectes"
for (int i = 0; i < max_insectes; i++) {
try {
data2[i] = Insecte.DesSeriarInsecte("fitxer_insectes");
Console.Write("L'insecte #{0} ha estat deseriat del fitxer binari i diu: ", i+1);
data[i].ShowData ();
}
catch (Exception e) {
Console.WriteLine("Error al deseriar l'insecte #{0}: {1}", i+1, e);
}
}
Console.WriteLine("Prem una tecla per tancar la consola...");
            Console.ReadKey();

Descarregar aquí.

BackupTool en C#

Creeu un sistema de backups per tal que l'usuari pugui fer còpies de fitxers de manera individual, i també directoris, de les següents maneres:
  • Especificant una sola ruta (path, en anglès): en aquest cas, la vostra aplicació crearà una carpeta/fitxer amb el mateix nom al vostre escriptori (desktop), amb tot el contingut de la carpeta/fitxer original.
  • Especificant dues rutes: en aquest cas la vostra aplicació, farà una còpia amb tot el contingut de la carpeta/fitxer original.

El programa ha de mostrar per consola el procés de còpia de fitxers en temps real, indicant el nom i l'extensió dels fitxers que s'estan copiant.
El programa, en finalitzar, ha d'incloure una opció que demani si es desitgen eliminar els fitxers originals, i procedir amb l'operació en cas afirmatiu.
El programa ha d'incloure control d'errors.
L'aplicació l'heu d'implementar amb C#.

Descarregar aquí.



dijous, 5 de novembre del 2015

Programar en Android

¿Cuáles son los componentes básicos?
  • Activity: Representa una pantalla con interfaz de usuario.
    • Ejemplo: de la App de correo, la pantalla de redactar un correo
  • Service: Se ejecuta en segundo plano, para realizar operaciones de larga duración o para realizar trabajo proveniente de procesos diferentes.
    • Ejemplo: escuchar música sin tener la App en primer plano
  • Content Provider: Permite a otras Apps consultar o modificar los datos almacenados en otra App.
    • Ejemplo: la App de contactos integrada en Android permit que otras App accedan a estos, como Whatsup que puede agregar contactos o consultarlos de ahí
  • Broadcast Receiver: Responde a mensajes difundidos a todo el sistema. Se puede notificar al usuario mediante la barra de notificaciones del sistema.
    • Ejemplo: notificar a la App que la batería del dispositivo está baja; o recibir mensajes push y mostrar al usuario un mensaje de recibido en la barra de notificaciones
Todos hay que declararlos en el AndroidManifest.xml.

Activity

És algo enfocado a lo que el usuario puede hacer (de ahí que sea una “Actividad”). Por lo que interactúa con el usuario directamente. Es la ventana que llena a toda la aplicación, que contiene a la interfaz de usuario. Si cambiamos de ventana cambiaremos de Activity.

¿Se puede dividir en otras Activities más pequeñas contenidas en una Activity?
No, de eso se encargan los Fragments.
¿Cómo se le asocia un Layout?
Justo después de la llamada al padre del método onCreate() con setContentView(R.layout.mi_layout)
¿Cómo se abre una nueva Activity?
Con Context.startActivity(Intent miIntent) (Veremos esto en profundidad más adelante)
¿Cómo se declara en el AndroidManifest.xml?
Con el tag <activity>
¿Cómo se comporta una Activity cuando otra la sustituye?
Cuando una Activity se inicia, comienza en la cima de la pila de Activity. La Activity que está en la cima de la pila es la que se está ejecutando y mostrando al usuario. El resto de Activities quedarán por debajo en la pila. En el momento en que la Activity sobre la cima se desapile (deje de existir; por ejemplo al pulsar el botón de “atrás”), la que está por debajo será la que ahora ocupe la cima de la pila y por tanto la que estará al frente del usuario.

Ciclo de la activity:
Una Activity se caracteriza por tener un ciclo de vida. Se llama igual que el ciclo de vida de un ser vivo, ya que son semejantes: nace, crece, come, se reproduce y muere.

Supongamos que tenemos un en la mano un dispositivo con una aplicación iniciada. Por tanto habrá una Activity en pantalla, que podrá seguir varios caminos durante su vida, como:
  • Arrancar la Activity: Pasará por Crear, Empezar y Continuar, para llegar a la ejecución normal.
  • Usar de manera normal la Activity: estamos en la Activity propiamente, estamos en ejecución.
  • Una ventana emergente se ha abierto: Pasará por Pausar.
  • Cambiar a otra Activity o bloquear el móvil: Pasará por Pausar y Parar. (Nota aclaratoria: si se cambia a otra Activity pasa necesariamente por pausar y parar, no ha tenido que surgir una ventana emergente para pasar por pausar, si se cambia de Activity se pasa por ambos estados directamente; esto se da con otras acciones que pasen por varios estados).
  • Apagar el móvil: Pasará por Pausar, Parar y Destruir.
El ciclo de vida completo que hemos visto en el gráfico anterior se traduce en el siguiente código (Todos los métodos son opcionales, aunque el onCreate() se recomienda usar siempre):

Activity con todos los métodos de su ciclo de vida
public class miActividad extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//Nuestro código a ejecutar en este momento
}
@Override
public void onStart() {
super.onStart();
//Nuestro código a ejecutar en este momento
}
@Override
public void onRestart() {
super.onRestart();
//Nuestro código a ejecutar en este momento
}
@Override
public void onResume() {
super.onResume();
//Nuestro código a ejecutar en este momento
}
@Override
public void onPause() {
super.onPause();
//Nuestro código a ejecutar en este momento
}
@Override
public void onStop() {
super.onStop();
//Nuestro código a ejecutar en este momento
}
@Override
public void onDestroy() {
super.onDestroy();
//Nuestro código a ejecutar en este momento
}
}