Buscar

IC(M) - 01 - Programação JAVA - parte 3

Prévia do material em texto

Programação Orientada a 
Objetos (Mobile) 
Leopoldo França 
Introdução ao Coding 
(Mobile) 
 Aumento da complexidade dos programas. 
 Programação estruturada - anos 60 
 Atualmente o tratamento estruturado não mais funciona. 
 Para resolver esse problema, a programação orientada a 
objetos foi criada. 
 A Programação Orientada a Objetos utiliza os conceitos 
que aprendemos no jardim de infância. 
 
Introdução à orientação a objetos. 
Desenvolvimento Orientado a Objetos 
 Visualiza e representa o mundo real como um conjunto 
de objetos que interagem entre si para que 
determinadas operações sejam realizadas. 
Introdução à orientação a objetos. 
Parar 
Motorista Carro 
4 
Desenvolvimento Orientado a Objetos 
 Visão contemporânea adota perspectiva OO. 
 
 Forma de construir software que difere bastante dos 
enfoques tradicionais. 
 
 Programação orientada a objetos é frequentemente 
referenciada como um “novo” paradigma de 
programação. 
5 
Desenvolvimento Orientado a Objetos 
Programação implementada pelo envio de mensagens. 
A solução de um problema consiste em identificar os 
objetos, mensagens e sequências de mensagens para 
efetuar a solução. 
Cada objeto do mundo real transforma-se em um 
“objeto” de software. 
6 
Desenvolvimento Orientado a Objetos 
 
Viabiliza a montagem de sistemas a partir de 
componentes. 
Sensível redução no custo de manutenção do software; 
Aumento na reutilização de código. 
 
7 
Linguagens típicas orientadas a objetos 
A primeira linguagem: SIMULA (Noruega, 1966) 
Smalltalk – pura (Xerox, década de 70) 
C++, Objective-C, Object Pascal (Delphi), 
JAVA e C# 
Orientação Objeto depende mais da mentalidade do 
programador do que da linguagem de programação. 
 
8 
Programação Orientada a Objeto em Java 
JAVA – criada na Sun Microsystems em junho de 1991. 
Estilo e sintaxe semelhantes as linguagens C / C ++. 
Atualmente mantida pela Oracle. 
Em nossa disciplina iremos utilizar a linguagem Java. 
Os princípios da orientação a objetos são os mesmos, 
podendo ser aplicados em várias linguagens. 
 
 Objetos 
 Classes 
 Atributos 
 Métodos 
 Construtores 
 Sobrecarga 
Conceitos básicos de POO 
Um objeto é qualquer coisa, real ou abstrata, sobre a qual 
armazenamos dados e operações que manipulam tais 
dados 
Unidade básica de modularização do sistema na 
abordagem OO 
Um objeto é um ente independente, composto por: 
atributos, isto é, características ou propriedades que definem o 
objeto 
comportamento, isto é, um conjunto de ações pré-definidas 
(denominada métodos), através das quais o objeto responderá à 
demanda de processamento por parte de outros objetos 
Objetos 
Classes 
Uma classe é um gabarito para a definição de objetos 
Classes: “fábricas” de objetos. 
Exemplificando, temos que Pessoa é uma classe e João é 
um objeto (instância) da classe Pessoa. 
Um carro é uma classe; “meu carro” é um objeto. 
Objetos similares são agrupados em classes 
 
Diagrama de Classes (UML) 
 
Nome da Classe 
 
 
Atributos 
 
 
Métodos 
 
 
Nome 
 
 
visibilidade nomeAtrib 1 : tipo1 = valor_default 
visibilidade nomeAtrib 2 : tipo2 = valor_default 
. . . 
 
 
visibilidade nomeMetodo 1 ( lista args ) : tipo1 
visibilidade nomeMetodo 2 ( lista args ) : tipo2 
. . . 
 
Classes e objetos em Java 
[acesso] class NomeDaClasse 
{ 
 
 Atributos 
 Construtores 
 Métodos 
} 
Definição da 
classe 
O conteúdo da 
classe 
Estrutura de uma classe em Java 
public class LivroNotas { 
 private String nomeCurso; 
 
 Construtor e métodos omitidos. 
} 
private String nomeCurso; 
Modificador de 
visibilidade Tipo 
Nome da 
variável 
Atributos de uma classe em Java 
Atributos 
 
Atributos armazenam valores para um 
objeto. 
Eles também são conhecidos como 
variáveis de instâncias. 
Atributos definem o estado de um objeto. 
Normalmente são definidos como privados 
e vêm acompanhados de dois métodos: 
•set<nomeAtributo> 
•get<nomeAtributo> 
Sobre os métodos Set e Get 
• Métodos set: 
• Também conhecidos como métodos modificadores. 
• Atribuem valores a variáveis de instância. 
• Devem validar novos valores para variáveis de instância. 
• Podem retornar um valor para indicar dados inválidos. 
• Métodos get: 
• Também conhecidos como métodos de acesso ou métodos de consulta. 
• Obtêm os valores das variáveis de instância. 
• Podem controlar o formato dos dados que retornam. 
Exemplo: 
public class Produto { 
 
 private int codigo; 
 private String nome; 
 
 public String getNome() { 
 return nome; 
 } 
 public void setNome(String nome_produto) { 
 nome = nome_produto; 
 } 
} 
•Realizada com a palavra 
reservada new. 
•Processo conhecido como criação 
de uma instância de uma classe. 
•Tipo da variável pode diferir do 
objeto realmente criado (desde que 
estejam relacionados por herança). 
 Produto p = new Produto(); 
Declaração do 
tipo da variável Variável 
Objeto real 
criado 
Construção de objetos em Java 
Construtores 
Construtores 
 
•Construtores inicializam um objeto. 
•Eles têm o mesmo nome das suas classes. 
•Eles armazenam valores iniciais nos atributos do objeto. 
•Eles frequentemente recebem valores de parâmetros externos para definir 
os atributos. 
EX: 
 
public Produto(int cod, String nome_prod) 
{ 
 codigo = cod; 
 nome = nome_prod; 
} 
Construtores 
 
Pode existir mais de um construtor em uma classe; 
Caso não seja definido nenhum construtor, o compilador cria o 
construtor padrão, sem parâmetros; 
O construtor padrão inicializa os atributos de classe para seus 
valores padrões. 
Caso seja definido qualquer construtor, o construtor padrão não será 
adicionado pelo compilador; 
Caso deseje-se que a classe ainda possua um construtor sem 
parâmetros, é necessário declará-lo explicitamente. 
Exemplo do uso de construtores em JAVA: 
Exemplo do uso de construtores em JAVA: 
Sobrecarga 
• Chamamos de sobrecarga de métodos quando temos na mesma 
classe métodos com o mesmo nome, contanto que tenham 
diferentes conjuntos de parâmetros (assinatura diferente). 
• Diferentes tipos, números e ordem dos parâmetros. 
• Quando os métodos com sobrecarga são chamados o 
compilador JAVA avalia seus parâmetros (ordem, quantidades, 
tipos) para saber qual método correto deve executar. 
INSTANCIAÇÃO E REFERÊNCIA DE OBJETOS 
ENVIO DE MENSAGENS 
•Objetos se comunicam através de trocas de 
mensagens. 
 
•As mensagens são compostas por um nome e por 
parâmetros (opcional). 
 
•Os objetos interagem entre si enviando mensagens 
uns para os outros. 
ENVIO DE MENSAGENS 
CICLO DE VIDA DE UM OBJETO 
• Temos então a seguinte sequência do ciclo de vida de um objeto: 
 1 – Criação: Envolve as etapas de declaração e construção do objeto. 
 2 – Utilização: Uso do objeto para sua função no programa. 
 3 – Destruição: Finalização do objeto, liberando a memória utilizada por esse objeto. 
 
• Ciclo de vida (exemplo da classe Pessoa ): 
 
 1 – Criação: Pessoa p1 , p2 , p3 ; 
 p2 = new Pessoa ( ) ; 
 
 2 – Utilização: p2.setNome ( "Maria" ) ; 
 p2.setIdade ( 18 ) ; 
 
 3 – Destruição: p2 = null ; 
 
• Java é uma das linguagens mais usadas para desenvolvimento Android. 
 
• Originalmente desenvolvida pela SUN para ser utilizada em pequenos 
dispositivos, está presente em diversas plataformas computacionais, desde 
celulares e palmtops a computadores; 
 
• Devido as suas vantagens, é hoje largamente adotada pela indústria no 
desenvolvimento de software. 
A tecnologia Java 
Máquina Virtual Java (JVM) 
• Executa bytecodes que são independentes da plataforma onde o programa 
será executado; 
 
• Pode ser implementada em software ou hardware. 
 
• Provê definições para: 
 
• Conjunto de instruções;• Conjunto de registradores; 
• Pilha; 
• Heap; 
• Formato de arquivos .class. 
Processo de produção de uma aplicação Android 
• Classes Java são compiladas para bytecode. 
 
• Um Android Application Package (APK) é produzido. O APK 
inclui as classes java compiladas bem como qualquer 
biblioteca ou recurso utilizado pela aplicação. 
 
• Um APK é o equivalente do arquivo JAR do Java (um 
arquivo zip com todo o conteúdo da aplicação). 
 
 
 
Activity 
• Classe Java que compõe uma aplicação Android; 
 
• Atividades podem ser usadas para ajudar o usuário a fazer coisas como: 
 
• Escrever um e-mail; 
• Tirar uma foto; 
• Encontrar um contato etc. 
 
• São normalmente associadas com uma tela. 
 
Activity 
• Uma classe Java Activity decide qual layout será utilizado e 
diz a aplicação como reagir as ações do usuário. 
 
• Ex: Se o layout tiver um botão, a classe Activity terá o código 
que será executado ao pressionar esse botão. 
 
• Uma aplicação Android é composta por um conjunto de 
telas, e cada tela está associada a um arquivo de layout e 
uma Activity. 
View 
• Classe que dá suporte a criação de componentes de interface com o 
usuário no Android. 
 
• Ocupa uma área retangular na tela e é responsável por gerenciar 
eventos e desenhar o visual do componente. 
 
• Montamos o layout da interface com o usuário utilizando subclasses 
da classe View. 
 
• Algumas subclasses que iremos utilizar: Button, Textview, Imageview, 
Spinner.... 
View 
• A interface com o usuário pode ser 
visualizada como um conjunto de 
componentes, cada um deles com 
um retângulo definindo sua área de 
atuação. 
 
 
 
 
 
 
XML 
• (eXtensible Markup Language) pode ser pensado como um padrão 
para gerar linguagens de marcação para necessidades especiais. 
 
• Capaz de descrever diversos tipos de dados, facilita o 
compartilhamento de informações por intermédio da internet. 
 
• Entre as linguagens baseadas em XML temos: XHTML (formato para 
páginas Web), RDF, SDMX, SMIL, MathML (formato para expressões 
matemáticas), SVG (formato gráfico vetorial)… 
 
• No Android utilizamos para definir o layout da interface gráfica. 
 
Exemplo com interação com o usuário 
• Podemos modificar a interface usando o Design Editor ou 
editando diretamente o código XML. 
 
• Ao adicionarmos componentes via Design Editor, o código 
XML é alterado instantaneamente. 
 
• Se adicionarmos um botão em nossa tela, teremos um 
código semelhante ao visto a seguir. 
Exemplo com interação com o usuário 
<Button 
 android:layout_width="wrap_content" 
 android:layout_height="wrap_content" 
 android:text="New Button" 
 android:id="@+id/button" 
 android:layout_below="@+id/textView" 
 android:layout_alignParentLeft="true" 
 android:layout_alignParentStart="true" 
 android:layout_marginTop="43dp" /> 
Activity 
• Uma aplicação Android é formada por um conjunto de 
activities. 
 
• Uma Activity pode iniciar a execução de outra activity, o que 
fará com que a primeira activity seja paralisada, mas seu 
estado será preservado, sendo retomado quando ela voltar 
ao foco. 
 
• Para cada tela de nossa aplicação  uma classe Activity. 
 
A classe R.java 
• Classe Java que é produzida / atualizada quando você cria ou compila 
seu projeto. 
 
• Reside na pasta app/build/generated/source/r/debug do seu projeto 
em um pacote com o mesmo nome do pacote do seu projeto. 
 
• É utlizada pelo Android para registrar os recursos utilizados pelo 
software, e entre outras coisas, permite a obtenção de referências para 
os componentes da interface de dentro do nosso código. 
 
• Não precisamos alterar o código dessa classe. 
Toast 
• No Android, Toast é uma mensagem de notificação que 
aparece, é exibida por um certo período de tempo e 
desaparece. 
 
• Este recurso não tem interação com o usuário, serve 
somente para dar informações rápidas. 
 
• Entre seus usos está o debug de aplicações. 
 
 
Exemplo Toast 
• // Exibe a mensagem por um período curto de tempo 
 
• Toast.makeText(getApplicationContext(), "mensagem com exibição 
curta", Toast.LENGTH_SHORT).show(); 
 
• // Exibe a mensagem por um período longo de tempo 
 
• Toast.makeText(getApplicationContext(), "mensagem com exibição 
longa", Toast.LENGTH_LONG).show(); 
Exemplo de uma activity com toast 
import android.app.Activity; 
import android.os.Bundle; 
import android.widget.Toast; 
 
public class Primeira_Activity extends Activity { 
 
 protected void onCreate(Bundle savedInstanceState) { 
 super.onCreate(savedInstanceState); 
 setContentView(R.layout.activity_primeira_); 
 Toast.makeText(Primeira_Activity.this, "Esta é a nossa Activity Principal", 
Toast.LENGTH_LONG).show(); 
 } 
} 
Exemplo 
•Embora o método onCreate não tenha essa 
finalidade, podemos usá-lo em conjunto com o 
Toast para fazer testes rápidos com algoritmos. 
 
•Vamos ver um exemplo disso. 
Exemplo 
public class Primeira_Activity extends Activity { 
 
 protected void onCreate(Bundle savedInstanceState) { 
 super.onCreate(savedInstanceState); 
 setContentView(R.layout.activity_primeira_); 
 
 int v[ ] = {1,2,3,4,5}; 
 int soma = 0; 
 for(int i = 0; i < v.length; i++) { 
 soma = soma +v[i]; 
 } 
 Toast.makeText(Primeira_Activity.this, "Soma: " + 
soma, Toast.LENGTH_LONG).show(); 
 } 
} 
soma = 1 
Valor de i Soma: 
soma = 3 
soma = 6 
soma = 10 
soma = 15 
i = 0 
i = 1 
i = 2 
i = 3 
i = 4 
Exemplo – Jogo do Marciano 
• O Jogo do Marciano consiste de uma brincadeira de adivinhação. O jogador 
deve descobrir em que árvore o marciano está escondido. Ele deve tentar 
acertar digitando o número da árvore onde o marciano estaria escondido. 
Esse número varia de 1 a 100. A cada tentativa, o jogo informa se o marciano 
está naquela árvore ou em uma árvore de número menor ou maior. Cada 
tentativa é computada para que no final seja exibido o número total de 
tentativas até encontrar o marciano. 
 
• Vamos ver esse exemplo usando uma interface gráfica (GUI) do Java e depois 
a versão para Android. 
 
 
Jogo do Marciano 
GUI 
 
 Android 
 
 
Jogo do Marciano - GUI 
import java.util.Random; 
import javax.swing.JOptionPane; 
public class Jogo extends javax.swing.JFrame { 
 
public static int arvore, cont=0; 
 
 public Jogo() { 
 initComponents(); 
 initJogo(); 
 } 
 
 private void initJogo(){ 
 
 Random s = new Random(); 
 arvore = s.nextInt(100) + 1; 
 mensagem.setText(""); 
 tentativa.setText("Tentativa:"); 
 entrada.setText(""); 
 cont = 0; 
 } 
Jogo do Marciano - GUI 
 /** 
 * This method is called from within the constructor to initialize the form. 
 * WARNING: Do NOT modify this code. The content of this method is always 
 * regenerated by the Form Editor. 
 */ 
 @SuppressWarnings("unchecked") 
 // <editor-fold defaultstate="collapsed" desc="Generated Code"> 
 private void initComponents() { 
 
 titulo = new javax.swing.JLabel(); 
 digite = new javax.swing.JLabel(); 
 entrada = new javax.swing.JTextField(); 
 entra = new javax.swing.JButton(); 
 tentativa = new javax.swing.JLabel(); 
 mensagem = new javax.swing.JLabel(); 
 jLabel1 = new javax.swing.JLabel(); 
 menuBar = new javax.swing.JMenuBar(); 
 fileMenu = new javax.swing.JMenu(); 
 inicioAsMenuItem = new javax.swing.JMenuItem(); 
 exitMenuItem = new javax.swing.JMenuItem(); 
 helpMenu = new javax.swing.JMenu(); 
 aboutMenuItem = new javax.swing.JMenuItem(); 
 ... 
Jogo do Marciano – GUI 
 
private void exitMenuItemActionPerformed(java.awt.event.ActionEvent evt) {System.exit(0); 
 } 
 
 private void aboutMenuItemActionPerformed(java.awt.event.ActionEvent evt) { 
 // TODO add your handling code here: 
 JOptionPane.showMessageDialog(null,"Jogo do Marciano\n2017"); 
 } 
 
private void inicioAsMenuItemActionPerformed(java.awt.event.ActionEvent evt) { 
 // TODO add your handling code here: 
 initJogo(); 
 } 
 
Jogo do Marciano – GUI 
 private void entraActionPerformed(java.awt.event.ActionEvent evt) { 
 String res=""; 
 int n = Integer.parseInt( entrada.getText() ); 
 cont++; 
 tentativa.setText("Tentativa: "+cont); 
 if (n > arvore) 
 res = "Está em uma árvore menor!"; 
 else 
 if (n< arvore) 
 res = "Está em uma árvore maior!"; 
 else{ 
 res = "Parabéns! Acertou em "+cont+" tentativas!"; 
 cont=0; 
 Random s = new Random(); 
 arvore = s.nextInt(100) + 1; 
 } 
 mensagem.setText(res); 
 } 
 
Jogo do Marciano – GUI 
 
public static void main(String args[]) { 
 /* Set the Nimbus look and feel */ 
 //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) "> 
 /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel. 
 * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html 
 */ 
 try { 
 for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) { 
 if ("Nimbus".equals(info.getName())) { 
 javax.swing.UIManager.setLookAndFeel(info.getClassName()); 
 break; 
 } 
 } 
 } catch (ClassNotFoundException ex) { 
 java.util.logging.Logger.getLogger(Jogo.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); 
 } catch (InstantiationException ex) { 
 java.util.logging.Logger.getLogger(Jogo.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); 
 } catch (IllegalAccessException ex) { 
 java.util.logging.Logger.getLogger(Jogo.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); 
 } catch (javax.swing.UnsupportedLookAndFeelException ex) { 
 java.util.logging.Logger.getLogger(Jogo.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); 
 } 
 //</editor-fold> 
 
 /* Create and display the form */ 
 java.awt.EventQueue.invokeLater(new Runnable() 
{ 
 public void run() { 
 new Jogo().setVisible(true); 
 } 
 }); 
 } 
Jogo do Marciano – Android 
 
Jogo do Marciano – Android - MainActivity.java 
 package com.example.leopoldo.jogomarciano; 
 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import java.util.Random; 
import android.view.View; 
import android.widget.EditText; 
import android.widget.TextView; 
 
public class MainActivity extends AppCompatActivity { 
 
 private TextView tentativa, mensagem; 
 private EditText entrada; 
 public static int arvore, cont=0; 
 
 public void initJogo(View v){ 
 
 Random s = new Random(); 
 arvore = s.nextInt(100) + 1; 
 mensagem.setText(""); 
 tentativa.setText("Tentativa:"); 
 entrada.setText(""); 
 cont = 0; 
 } 
Jogo do Marciano – Android 
 @Override 
 protected void onCreate(Bundle savedInstanceState) { 
 super.onCreate(savedInstanceState); 
 setContentView(R.layout.activity_main); 
 tentativa = (TextView) findViewById(R.id.tentativa); 
 mensagem = (TextView) findViewById(R.id.mensagem); 
 entrada = (EditText) findViewById(R.id.entrada); 
 
 Random s = new Random(); 
 arvore = s.nextInt(100) + 1; 
 mensagem.setText(""); 
 tentativa.setText("Tentativa:"); 
 entrada.setText(""); 
 cont = 0; 
 
 } 
Jogo do Marciano – Android 
 public void entraActionPerformed(View v) { 
 String res=""; 
 String e = String.valueOf(entrada.getText()); 
 entrada.setText(""); 
 int n = Integer.parseInt( e ); 
 cont++; 
 tentativa.setText("Tentativa: "+cont); 
 if (n > arvore) 
 res = "Está em uma árvore menor!"; 
 else 
 if (n< arvore) 
 res = "Está em uma árvore maior!"; 
 else{ 
 res = "Parabéns! Acertou em "+cont+" tentativas!"; 
 cont=0; 
 Random s = new Random(); 
 arvore = s.nextInt(100) + 1; 
 } 
 mensagem.setText(res); 
 } 
} 
 
Jogo do Marciano – Android - activity_main.xml 
 
<?xml version="1.0" encoding="utf-8"?> 
<android.support.constraint.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/tentativa" 
 android:layout_width="wrap_content" 
 android:layout_height="wrap_content" 
 android:text="Tentativa:" 
 android:textAppearance="@android:style/TextAppearance.DeviceDefault.Large" 
 app:layout_constraintBottom_toBottomOf="parent" 
 app:layout_constraintHorizontal_bias="0.165" 
 app:layout_constraintLeft_toLeftOf="parent" 
 app:layout_constraintRight_toRightOf="parent" 
 app:layout_constraintTop_toTopOf="parent" 
 app:layout_constraintVertical_bias="0.073" /> 
 
 
 <TextView 
 android:id="@+id/digite" 
 android:layout_width="162dp" 
 android:layout_height="41dp" 
 android:layout_marginEnd="8dp" 
 android:layout_marginLeft="8dp" 
 android:layout_marginRight="8dp" 
 android:layout_marginStart="8dp" 
 android:layout_marginTop="272dp" 
 android:text="Digite sua tentativa:" 
 android:textAppearance="@android:style/TextAppearance.DeviceDefault.Medium" 
 app:layout_constraintEnd_toEndOf="parent" 
 app:layout_constraintHorizontal_bias="0.038" 
 app:layout_constraintStart_toStartOf="parent" 
 app:layout_constraintTop_toTopOf="parent" /> 
 
<EditText 
 android:id="@+id/entrada" 
 android:layout_width="155dp" 
 android:layout_height="41dp" 
 android:layout_marginBottom="208dp" 
 android:layout_marginEnd="8dp" 
 android:layout_marginLeft="8dp" 
 android:layout_marginRight="8dp" 
 android:layout_marginStart="8dp" 
 android:ems="10" 
 android:hint="número de 1 a 100" 
 android:inputType="textPersonName" 
 app:layout_constraintBottom_toBottomOf="parent" 
 app:layout_constraintEnd_toEndOf="parent" 
 app:layout_constraintHorizontal_bias="0.962" 
 app:layout_constraintStart_toStartOf="parent" /> 
Jogo do Marciano – Android 
 <TextView 
 android:id="@+id/mensagem" 
 android:layout_width="335dp" 
 android:layout_height="83dp" 
 android:layout_marginEnd="8dp" 
 android:layout_marginLeft="8dp" 
 android:layout_marginRight="8dp" 
 android:layout_marginStart="8dp" 
 android:layout_marginTop="100dp" 
 android:textAppearance="@android:style/TextAppearance.DeviceDefault.Large" 
 app:layout_constraintEnd_toEndOf="parent" 
 app:layout_constraintStart_toStartOf="parent" 
 app:layout_constraintTop_toTopOf="parent" /> 
 
<Button 
 android:id="@+id/b_entra" 
 android:layout_width="wrap_content" 
 android:layout_height="wrap_content"android:layout_marginEnd="8dp" 
 android:layout_marginLeft="8dp" 
 android:layout_marginRight="8dp" 
 android:layout_marginStart="8dp" 
 android:layout_marginTop="28dp" 
 android:onClick="entraActionPerformed" 
 android:text="ENTRA" 
 app:layout_constraintEnd_toEndOf="parent" 
 app:layout_constraintHorizontal_bias="0.939" 
 app:layout_constraintStart_toStartOf="parent" 
 app:layout_constraintTop_toBottomOf="@+id/entrada" /> 
 
 <Button 
 android:id="@+id/b_reset" 
 android:layout_width="wrap_content" 
 android:layout_height="wrap_content" 
 android:layout_marginBottom="24dp" 
 android:layout_marginEnd="8dp" 
 android:layout_marginLeft="8dp" 
 android:layout_marginRight="8dp" 
 android:layout_marginStart="8dp" 
 android:onClick="initJogo" 
 android:text="reset" 
 
app:layout_constraintBottom_toBottomOf="parent" 
 app:layout_constraintEnd_toEndOf="parent" 
 app:layout_constraintStart_toStartOf="parent" /> 
 
</android.support.constraint.ConstraintLayout> 
Jogo do Marciano – Android - string.xml 
 
<resources> 
 <string name="app_name">Jogo Marciano</string> 
</resources> 
 
DÚVIDAS ?

Mais conteúdos dessa disciplina