Prévia do material em texto
Universidade Veiga de Almeida Gestão da Tecnologia da Informação Programação para Dispositivos Móveis Patrícia Rocha de Araújo Ferreira Professor: Claudio Fico Fonseca Rio de Janeiro 2024 Introdução Este trabalho tem como objetivo o desenvolvimento de um aplicativo Android com foco na persistência de dados usando SQLite, um sistema de gerenciamento de banco de dados leve e eficiente .A persistência de dados é fundamental para criar aplicativos robustos ,e o uso de banco de dados ,seja local ou remoto,é uma habilidade essencial no desenvolvimento de aplicativos modernos. Objetivo O principal objetivo desse trabalho é criar um aplicativo Android que utilize o SQLite para armazenar e gerenciar dados de um objeto escolhido pelo desenvolvedor.O objeto será definido por meio de uma classe personalizada,incluindo pelo menos cinco atributos com 3 tipos de dados diferentes , além do atributo “id” do tipo “long”. A classe também deve ter um método construtor e método de acesso (getters & Setters) para todos os atributos,bem como outros métodos necessários. O aplicativo a ser desenvolvido deverá realizar os seguintes funcionalidade Listagem de Dados O aplicativo apresentará os dados do objeto armazenado por meio de uma lista (ListView) permitindo que o usuário visualize os registros existentes. Inclusão de Registros Os usuários poderão adicionar novos registros do objeto, inserindo informações relevantes por meio de formulários. Alteração de Registro O aplicativo possibilita a adição de registros existentes, permitindo que o usuário atualize as informações conforme o necessário. Exclusão de Registros Os usuários terão a opção de excluir registros removendo-os permanentemente da base de dados. Gerenciamento do Banco de Dado O aplicativo cuidará da abertura, fechamento e acesso ao recurso do banco de dados SQlite de forma eficiente e segura. Prmeiro, o arquivo XML da tela (activity_main.xml): <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity"> <EditText android:id="@+id/editTextA1" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="Nota A1" android:inputType="numberDecimal" android:layout_margin="16dp"/> <EditText android:id="@+id/editTextA2" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="Nota A2" android:inputType="numberDecimal" android:layout_below="@id/editTextA1" android:layout_margin="16dp"/> <EditText android:id="@+id/editTextA3" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="Nota A3" android:inputType="numberDecimal" android:layout_below="@id/editTextA2" android:layout_margin="16dp"/> <Button android:id="@+id/buttonCalculate" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Calcular Média" android:layout_below="@id/editTextA3" android:layout_centerHorizontal="true" android:layout_marginTop="32dp"/> <TextView android:id="@+id/textViewResult" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Resultado" android:textSize="20sp" android:layout_below="@id/buttonCalculate" android:layout_centerHorizontal="true" android:layout_marginTop="32dp"/> </RelativeLayout> Agora, o código Java da controller (MainActivity.java): import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; import android.widget.Toast; import androidx.appcompat.app.AppCompatActivity; public class MainActivity extends AppCompatActivity { private EditText editTextA1, editTextA2, editTextA3; private Button buttonCalculate; private TextView textViewResult; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); editTextA1 = findViewById(R.id.editTextA1); editTextA2 = findViewById(R.id.editTextA2); editTextA3 = findViewById(R.id.editTextA3); buttonCalculate = findViewById(R.id.buttonCalculate); textViewResult = findViewById(R.id.textViewResult); buttonCalculate.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { calculateAverage(); } }); } private void calculateAverage() { String a1String = editTextA1.getText().toString(); String a2String = editTextA2.getText().toString(); String a3String = editTextA3.getText().toString(); if (a1String.isEmpty() || a2String.isEmpty() || a3String.isEmpty()) { Toast.makeText(this, "Por favor, preencha todas as notas.", Toast.LENGTH_SHORT).show(); return; } double a1 = Double.parseDouble(a1String); double a2 = Double.parseDouble(a2String); double a3 = Double.parseDouble(a3String); double average = (a1 + a2 + a3) / 3; textViewResult.setText(String.format("Média: %.2f", average)); } } <!—fim --> Conclusão Este trabalho propõe desenvolvimento de aplicativos Android com foco na persistência de dados usando SQLite, aplicando princípios de programação orientada a objetos e boas práticas de desenvolvimento. O aplicativo resultante, permitirá aos usuários gerenciar registros de um objeto personalizado de forma eficaz incluindo a listagem, inclusão, alteração e exclusão de dados. A implementação seguirá a arquitetura em três camadas para garantir a organização e a manutenção adequada do código. Referências: DEITEL, P. J.; DEITEL, H. M.; WALD, A. Android 6 para programadores: uma abordagem baseada em aplicativos. Porto Alegre: Bookman, 2016. Minha Biblioteca. cap. 2, seções 3.3.1 a 3.3.3, p. 76-78. DEITEL, P. J.; DEITEL, H. M.; DEITEL, A. Android: como programar. Porto Alegre: Bookman, 2015. Minha Biblioteca. cap. 2, seções: 2.4 a 2.9, p. 46-66. DEITEL, P. J.; DEITEL, H. M.; WALD, A. Android 6 para programadores: uma abordagem baseada em aplicativos. Porto Alegre: Bookman, 2016. Minha Biblioteca. cap. 4, seção 4.3.17, p. 119-120. HORSTMANN, C. S. Conceitos de computação com Java: compatível com Java 5 & 6. Porto Alegre: Bookman, 2009. Minha Biblioteca. cap. 11, seções 11.2 a 11.6, p. 455-466. image1.jpeg image2.jpeg image3.jpeg