Prévia do material em texto
TÓPICOS ESPECIAIS EM POO
Professor Aldriano
Programação Orientada a Objetos - POO
• A programação orientada a objetos, conhecida como
POO, é um paradigma (padrão/técnica a ser seguido)
no mundo do desenvolvimento de softwares.
https://www.linkedin.com/pulse/programa%C3%A7%C3%A3o-orientada-objetos-diego-rocha/?originalSubdomain=pt
• LPOO é uma abordagem de programação que utiliza objetos e classes
na organização do código. Ela se concentra na criação de modelos
baseados em objetos do mundo real, facilitando o desenvolvimento e
a manutenção de software.
• A técnica POO tenta aproximar ao máximo o mundo
real do mundo virtual, entre outras palavras, é
utilizar no computador os conceitos que temos no
mundo real de que tudo é um objeto.
Programação Orientada a Objetos - POO
Programação Estruturada vs Programação Orientada a Objetos
• No paradigma estruturado, temos
procedimentos (ou funções) que são
aplicados globalmente em nossa
aplicação.
• O algoritmo é desenvolvido
pensando-se em uma série de etapas
que o software deve cumprir para
atingir o seu objetivo.
• Um exemplo clássico disso seria
pensarmos quais são as etapas para
a troca de uma lâmpada?
Programação Orientada a Objetos - POO
Programação Estruturada - Algoritmo para trocar uma lâmpada:
• 1. Desligue a luz no
interruptor.
• 2. Espere a lâmpada
esfriar se estiver quente.
• 3. Gire a lâmpada no
sentido anti-horário para
removê-la.
• 4. Coloque a nova lâmpada
e gire-a no sentido
horário até ficar firme.
• 5. Ligue a luz para testar
a nova lâmpada.
Acionar o interruptor;
Se a lâmpada não acender, então:
Pegar uma escada;
Posicionar a escada embaixo da lâmpada;
Buscar uma lâmpada nova;
Desligar o interruptor para tomar choque;
Subir na escada;
Retirar a lâmpada queimada;
Colocar uma lâmpada nova;
Enquanto a lâmpada não acender, faça:
Retirar a lâmpada queimada;
Colocar uma lâmpada nova.
Programação Orientada a Objetos - POO
Programação Estruturada vs Programação Orientada a Objetos
• No caso da orientação a objetos, temos
métodos que são aplicados aos dados de
cada objeto.
• Se concentra em utiliza objetos para
encapsular dados e comportamentos. A
LPOO facilita a reutilização de código
e a manutenção.
https://www.dio.me/articles/java-c-ou-python-ainda-prefiro-o-c
Programação Orientada a Objetos - POO
Programação Estruturada vs Programação Orientada a Objetos
• A programação estruturada, quando aplicada corretamente, pode
oferecer um desempenho superior em comparação à programação
orientada a objetos (POO), devido à sua natureza sequencial e ao
fluxo linear de execução de código, que minimiza desvios e
complexidades adicionais comuns na POO.
• No entanto, a POO apresenta vantagens significativas para o
desenvolvimento de aplicações modernas, especialmente em contextos
onde o desempenho absoluto não é a principal preocupação, dada a
capacidade de processamento elevada dos computadores atuais.
• A popularidade e a adoção generalizada da POO são atribuídas à sua
forte capacidade de reutilização de código e à representação mais
intuitiva e próxima da realidade dos sistemas, tornando-a uma
escolha preferencial para muitos desenvolvedores apesar das
considerações de desempenho.
LINGUAGEM DE PROGRAMAÇÃO JAVA
Orientada a Objetos com Java
• Java é uma linguagem de programação de alto nível que permite a
criação de aplicativos robustos e escaláveis. Para começar a
programar em Java, você precisa configurar seu ambiente de
desenvolvimento.
1. Instalação do JDK (Java Development Kit):
• Faça o download do JDK a partir do site oficial da Oracle.
• Siga as instruções de instalação para seu sistema operacional
(Windows, Mac, Linux).
2. Configuração do Path:
• Adicione o diretório bin do JDK ao Path do sistema para poder
compilar e executar programas Java a partir da linha de
comando.
LINGUAGEM DE PROGRAMAÇÃO JAVA
Orientada a Objetos com Java
3. Escolha de um IDE:
• Embora seja possível programar em Java usando um editor de
texto simples e a linha de comando, o uso de um IDE (Integrated
Development Environment) como IntelliJ IDEA, Eclipse ou
NetBeans pode facilitar muito o desenvolvimento.
Sintaxe da Linguagem Java
Estrutura Básica de um Programa Java
• Classe: Em Java, todo o código deve estar dentro de uma classe.
• Método main: É o ponto de entrada de qualquer aplicação Java.
• Instruções: Cada instrução termina com um ponto e vírgula(;).
C:\>javac HelloWord.java
C:\>java HelloWorld
Sintaxe da Linguagem Java
Tipo de Dados em Java
• Java possui vários tipos de dados primitivos, incluindo:
• int para inteiros
• double para números de ponto flutuante
• char para caracteres
• boolean para valores booleanos (true ou false)
Exercício Prático com Java
Calculadora simples: programa Java que leia dois números do usuário e exiba
a soma, subtração, multiplicação e divisão desses números.
Exercício Prático com Java
Calculadora simples: programa Java que leia dois números do usuário e exiba
a soma, subtração, multiplicação e divisão desses números.
Bibliotecas de Classe Java
• Java possui um vasto conjunto de bibliotecas de classe que fornecem
funcionalidades prontas para diversas tarefas. Algumas das
bibliotecas mais comuns incluem:
• Java Collections Framework: Fornece implementações de
estruturas de dados como listas, filas, conjuntos e mapas.
• Biblioteca de Entrada/Saída (I/O).
Tratamento de Exceções em Java
• O tratamento de exceções é uma parte essencial do desenvolvimento
em Java, pois ajuda a lidar com situações inesperadas de forma
controlada. Em Java, as exceções são tratadas utilizando os blocos
try, catch, finally, e throw.
• 1. Bloco try e catch
• O bloco try é usado para envolver o código que pode lançar uma
exceção. O bloco catch é usado para capturar e tratar a exceção
lançada
Tratamento de Exceções em Java
• O throw é usado para lançar explicitamente uma exceção em Java.
Tratamento de Exceções em Java
import java.util.InputMismatchException;
import java.util.Scanner;
public class ExcecaoExemploCompleto {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
try {
System.out.print("Digite um número inteiro: ");
int numero = scanner.nextInt();
int resultado = 10 / numero;
System.out.println("Resultado da divisão: " + resultado);
int[] numeros = {1, 2, 3};
System.out.println("Elemento do array: " + numeros[3]);
} catch (InputMismatchException e) {
System.out.println("Erro: Entrada inválida. Por favor, digite um número inteiro.");
} catch (ArithmeticException e) {
System.out.println("Erro: Divisão por zero não é permitida.");
} catch (ArrayIndexOutOfBoundsException e) {
System.out.println("Erro: Índice do array fora dos limites.");
} finally {
scanner.close();
System.out.println("Bloco finally executado. Recursos liberados.");
}
}
}
ADB (Android Debug Bridge)
• O ADB é uma ferramenta de linha de comando que permite a
comunicação entre um computador e um dispositivo Android.
• Desenvolvimento de Aplicações: Desenvolvedores utilizam o ADB
para testar e depurar aplicativos diretamente em dispositivos
físicos ou em emuladores.
• Gerenciamento de Arquivos: Permite copiar arquivos entre o
dispositivo Android e o computador.
• Execução de Comandos no Dispositivo: É possível executar
comandos diretamente no dispositivo Android, como instalar ou
desinstalar aplicativos, reiniciar o dispositivo, entre outros.
• Acesso a Logs: Permite visualizar logs do sistema e da
aplicação para ajudar na depuração.
• Automatização: Pode ser usado em scripts para automatizar
tarefas no dispositivo Android.
Exemplos de Uso do ADB
Exemplos de Uso do ADB
Exemplos de Uso do ADB
Exemplos de Uso do ADB
Configurando para Uso o ADB
• Variáveis Ambientais
• PATH: C:\Users\my\AppData\Local\Android\Sdk\platform-tools
• adb.exe
• sqlite3.exe
Programação Orientada a Objetos - POO
Os 4 Pilares da LPOO
1. Abstração
2. Herança
3. Encapsulamento
4. Polimorfismo
Programação Orientada a Objetos - POO
Vantagens da LPOOA LPOO oferece várias vantagens, incluindo:
• Reutilização de código
• Facilidade de manutenção
• Melhor organização e modularidade
• Flexibilidade e escalabilidade
Programação Orientada a Objetos - POO
Os 4 Pilares da LPOO – (1) Abstração
• Abstração: é a capacidade de representar conceitos complexos de
forma simplificada. Isso significa que a POO permite criar modelos
simples e abstratos de objetos do mundo real, sem se preocupar com
os detalhes internos desses objetos.
• Importante levar em consideração três pontos:
• Identidade: Criar uma identidade única (nome da classe) ao
objeto;
• Características: Criar as características (atributos) para o
objeto;
• Comportamento: Criar as ações / funções (métodos) para o
objeto;
Programação Orientada a Objetos - POO
Os 4 Pilares da LPOO - Abstração
1-Projetar - Classe
2-Instanciar (Objeto) para poder USAR.
https://materialpublic.imd.ufrn.br/curso/disciplina/1/8/2
Programação Orientada a Objetos - POO
Os 4 Pilares da LPOO – Abstração – Objetos
• Objetos: São instâncias de classes, ou seja, a criação de uma
classe.
• Entre outras palavras, se a classe representa um molde de um carro,
o objeto representa o carro fabricado.
2-Instanciar (Objeto) para poder USAR.
Programação Orientada a Objetos - POO
Conceito – “Visão” de OOP pelo Navegador Chrome
1. Crie um arquivo
(pratica1.html) e
digite o código.
2. Abre –o no navegado.
3. Tecle F12 ou Ctrl+Shift+J
https://aldriano.com.br/unip2024-lpoo/exercicios/html/
Programação Orientada a Objetos - POO
Conceito – “Visão” de OOP pelo Navegador Chrome
*circle.hidden = true
Programação Orientada a Objetos - POO
Conceito – “Visão” de OOP pelo Navegador Chrome
Programação Orientada a Objetos - POO
Os 4 Pilares da LPOO – Abstração – Classe Carro.java
Criar o arquivo chamado: Carro.java
Programação Orientada a Objetos - POO
Os 4 Pilares da LPOO – Abstração – Main.java
Criar o arquivo chamado: Main.java
https://www.onlinegdb.com/online_c++_compiler
Compilar e executar Online
Para criar e acessar o
objeto, use o operador
new.
Programação Orientada a Objetos - POO
Processo de Interpretação e Compilação
• Quando criamos uma classe Java e a salvamos com a extensão .java,
é nada mais nada menos que código Java não inteligível pela Java
Virtual Machine - JVM . Antes de pedir pra que sua máquina execute
o código, este mesmo código precisa estar em linguagem de máquina,
portanto, compilado!
• A JVM não consegue entender código Java,
mas sim bytecodes.
• “Bytecode é o resultado de um processo
semelhante ao dos compiladores de código-fonte
que não é imediatamente executável.”
Programação Orientada a Objetos - POO
Processo de Interpretação e Compilação
• A JVM está disponível para a maioria dos sistemas operacionais do
mercado, sendo assim conseguimos rodar a mesma aplicação Java no
Windows, macOS, Linux, Solaris, entre outros. Essa funcionalidade
implementa um dos conceitos que nasceram forte com o Java:
• “escreva uma vez e execute em qualquer lugar!”
O MyProgram.class gerado não é legível por seres humanos (não que seja impossível). Ele está
escrito no formato que a Virtual Machine sabe entender e o qual foi especificado que ela o
entendesse.
https://www.alura.com.br/apostila-java-orientacao-objetos/o-que-e-java#compilando-o-primeiro-programa
Programação Orientada a Objetos - POO
Os 4 Pilares da LPOO – Abstração – Compilação e Execução
1. Navegue até o diretório onde os arquivos foram salvos.
2. Compile ambos os arquivos com o comando: javac Carro.java
Main.java.
3. Execute o programa compilado com o comando: java Main.
• Compilação e execução pelo PROMPT
Programação Orientada a Objetos - POO
Os 4 Pilares da LPOO – Exemplo Java
https://pt.slideshare.net/profDanielBrandao/aula-1-introduo-a-poo
https://www.alura.com.br/apostilas
https://pt.slideshare.net/profDanielBrandao/aula-1-introduo-a-poo
Programação Orientada a Objetos - POO
Até a
Próxima aula
Programação Orientada a Objetos - POO
Os 4 Pilares da LPOO – Abstração – Métodos Getters e Setters
• As classes que criamos, como a `Carro`, devem incluir não apenas
atributos, mas também métodos que definam as ações que podem ser
executadas. Isso é essencial porque um carro deve fornecer
funcionalidades específicas para ser operado pelos usuários,
representando seu comportamento dinâmico.
• Em Java, os métodos setters e getters são convenções usadas para
acessar e atualizar o valor de variáveis privadas de uma classe.
Isso faz parte do princípio de encapsulamento em programação
orientada a objetos, onde você protege os membros de dados
(atributos) de acesso direto externo.
https://materialpublic.imd.ufrn.br/curso/disciplina/1/8/2/9
Programação Orientada a Objetos - POO
Os 4 Pilares da LPOO – Abstração – Métodos Getters e Setters
• Getters: São métodos que permitem ler ou obter o valor de uma
variável privada. Eles geralmente não têm parâmetros e retornam o
valor da variável que estão lendo. O nome de um getter geralmente
começa com get seguido pelo nome da variável, com a primeira letra
em maiúsculo.
• Setters: São métodos que permitem definir ou atualizar o valor de
uma variável privada. Eles geralmente têm um parâmetro que é o
valor a ser definido e não retornam nada (void). O nome de um
setter geralmente começa com set seguido pelo nome da variável, com
a primeira letra em maiúsculo.
Programação Orientada a Objetos - POO
Os 4 Pilares da LPOO – Abstração – Métodos Getters e Setters
Classe Carro.java
• O método getCor() é um getter que
retorna o valor da variável cor.
• O método setCor(String cor) é um
setter que define o valor da
variável cor.
Programação Orientada a Objetos - POO
Os 4 Pilares da LPOO – Abstração – Métodos Getters e Setters
Definição dos métodos tem cinco partes básicas:
• tipo de acesso do método, (public, private, protected);
• nome do método;
• o tipo de retorno, o qual pode ser um objeto ou tipo primitivo;
• um ou mais parâmetros;
• finalmente, o corpo do método.
Programação Orientada a Objetos - POO
Os 4 Pilares da LPOO – Abstração – Métodos Getters e Setters
TesteCarro.java
Programação Orientada a Objetos - POO
Os 4 Pilares da LPOO – Abstração – Métodos Getters e Setters
Programação Orientada a Objetos - POO
Os 4 Pilares da LPOO – Abstração – Métodos Getters e Setters
• Dando continuidade a Atividade 2, vamos agora acrescentar os
comportamentos dos objetos nas classes, escrevendo o código de seus
métodos.
• De acordo com os exemplos vistos, crie uma classe chamada Livro e
especifique os seus atributos e métodos
• Atividade 2
Programação Orientada a Objetos - POO
Os 4 Pilares da LPOO - Herança
• Herança é um mecanismo pelo qual uma nova classe pode herdar
propriedades e métodos de uma classe existente, promovendo a
reutilização de código e a hierarquia de classes.
• Uma subclasse herda as características de uma superclasse.
Facilitando a reutilização de código.
• A herança promove a hierarquia e organização do código, permitindo
a criação de classes mais especificas a partir de classes mais
genéricas, sem a necessidade de duplicar código
Prática:
https://aldriano.com.br/unip2024-lpoo/exercicios/java/heranca/
Programação Orientada a Objetos - POO
Os 4 Pilares da LPOO - Encapsulamento
• Encapsulamento: Fundamental em programação orientada a objetos. Ele
se refere a prática de ocultar os detalhes internos de como uma
classe opera, expondo apenas métodos seguros para interação com o
objeto. Isso é alcançado através do uso de modificares de acesso
como: private, public e protected.
Prática:
https://aldriano.com.br/unip2024-lpoo/exercicios/java/caneta/
Programação Orientada a Objetos - POO
Os 4 Pilares da LPOO - Composição
• Composição: Composição em Orientação a Objetos é um conceito onde
uma classe é composta por outras classes, ou seja, uma classe
"possui" ou "é composta por" objetos de outras classes como seus
atributos. Essa relação é muitas vezes representada como uma
relação "tem-um".• Exemplo de composição usando as classes Carro e Alarme
Prática:
https://aldriano.com.br/unip2024-lpoo/exercicios/java/composicao/
Programação Orientada a Objetos - POO
Os 4 Pilares da LPOO - Polimorfismo
• Polimorfismo em programação orientada a objetos significa que um
objeto pode ser tratado como se fosse de um tipo diferente, desde
que ele herde desse tipo. Isso permite que métodos com a mesma
assinatura se comportem de maneira diferente em classes diferentes,
tornando o código mais flexível e reutilizável.
• O poder do polimorfismo, juntamente com a reescrita de método, está
na capacidade de diminuir o acoplamento entre as classes. Isso
significa que, ao usar o polimorfismo, você pode evitar que novos
códigos resultem em modificações em inúmeros lugares.
Prática:
https://aldriano.com.br/unip2024-lpoo/exercicios/java/polimorfismo/
https://www.universidadejava.com.br/java/java-polimorfismo/
Programação Orientada a Objetos - POO
Os 4 Pilares da LPOO – Classe Abstrata
• É uma estrutura que permite definir métodos e implementações padrão
que serão compartilhados por suas subclasses, mas não pode ser
instanciada diretamente. Ela serve como um modelo para outras
classes que dela derivam, fornecendo implementações padrão para
métodos, bem como métodos abstratos que devem ser implementados
pelas subclasses.
• Uma classe abstrata pode conter tanto métodos concretos (com
implementação) quanto métodos abstratos (sem implementação), que
devem ser implementados pelas subclasses.
Prática:
https://aldriano.com.br/unip2024-lpoo/exercicios/java/classeAbstrata/
• Neste exemplo, a classe Animal é abstrata e define um método abstrato emitirSom, que deve ser
implementado pelas subclasses Cachorro e Gato. As subclasses fornecem implementações
específicas para o método emitirSom, permitindo que cada animal emita o som correto.
Programação Orientada a Objetos - POO
Os 4 Pilares da LPOO – Interfaces
• É um tipo de "contrato" que define um conjunto de métodos que uma
classe deve implementar. Em outras palavras, uma interface
especifica um comportamento que uma classe deve seguir, mas não
fornece implementações concretas desses métodos.
• As interfaces são semelhantes a classes abstratas, mas com algumas
diferenças importantes:
1. Uma classe pode implementar várias interfaces, mas só pode herdar
de uma única classe pai.
2. Todos os métodos de uma interface são implicitamente públicos e
abstratos. Você não precisa usar a palavra-chave public ou abstract
ao declarar os métodos em uma interface.
3. As variáveis em uma interface são implicitamente públicas,
estáticas e finais. Ou seja, são constantes que não podem ser
alteradas.
Programação Orientada a Objetos - POO
Os 4 Pilares da LPOO – Interfaces
4. Interfaces são úteis quando você deseja que várias classes
compartilhem um conjunto comum de métodos, mas essas classes podem
representar diferentes tipos de objetos. Por exemplo, você pode ter
uma interface Animal com métodos como mover e emitirSom, e então ter
classes como Cachorro, Gato, etc., que implementam essa interface de
maneira específica para cada tipo de animal.
Prática:
https://aldriano.com.br/unip2024-lpoo/exercicios/java/classeAbstrata/
• Neste exemplo, a interface Animal define os métodos mover e emitirSom, e as classes Cachorro e
Gato implementam esses métodos de acordo com o comportamento específico de cada animal.
Programação Orientada a Objetos - POO
Os 4 Pilares da LPOO – Exceções
• Em programação orientada a objetos (OOP), exceções são conceitos
fundamentais relacionados a tratamento de erros.
• Em OOP, exceções são eventos que ocorrem durante a execução de
um programa que interrompem o fluxo normal de execução. Elas
geralmente indicam condições inesperadas ou erros que precisam ser
tratados. Em Java, por exemplo, exceções são objetos que herdam da
classe Throwable e podem ser lançadas (com throw) e capturadas (com
try e catch). O tratamento de exceções permite que um programa lide
com erros de maneira controlada, evitando a interrupção completa da
execução.
Programação Orientada a Objetos - POO
Os 4 Pilares da LPOO – Exceções
• Em programação orientada a objetos (OOP), exceções e threads são
conceitos fundamentais relacionados a tratamento de erros.
public class ExcecoesExemplo {
public static void main(String[] args) {
try {
int[] numeros = {1, 2, 3};
System.out.println(numeros[4]); // Tentando acessar um índice
inválido do array
} catch (ArrayIndexOutOfBoundsException e) {
System.out.println("Ocorreu uma exceção: " + e.getMessage());
} finally {
System.out.println("Bloco finally sempre é executado, mesmo
após uma exceção.");
}
}
}
Programação Orientada a Objetos - POO
Os 4 Pilares da LPOO – Threads
• Threads são conceitos fundamentais relacionados a programação
concorrente.
• Threads: Threads são fluxos de execução separados dentro de um
processo que permitem que um programa execute tarefas
concorrentemente. Em OOP, threads são usadas para criar programas
que podem realizar várias tarefas ao mesmo tempo, melhorando a
eficiência e a capacidade de resposta do programa. Em Java, a
classe Thread é usada para criar e controlar threads, e a
programação concorrente é facilitada pelo uso de métodos como
start() (para iniciar uma thread), join() (para esperar que uma
thread termine) e sleep() (para pausar a execução de uma thread por
um período de tempo).
• Ambos os conceitos são essenciais para a programação robusta e
eficiente em OOP.
Programação Orientada a Objetos - POO
Os 4 Pilares da LPOO – Threads - exemplo
Programação Orientada a Objetos - POO
Interfaces gráficas
de usuário
Programação Orientada a Objetos - POO
1- https://stackmobile.com.br/android-studio-como-executar-os-seus-apps-pelo-cabo-usb/
2-https://developer.android.com/codelabs/basic-android-kotlin-compose-first-app#1
*https://aldriano.com.br/unip2024-tepoo/MeuprimeiroappAndroid.pdf
Crie um projeto usando o modelo
Programação para Android
1
2
3
1. manifests: Descrição: Contém o arquivo
AndroidManifest.xml, que define a estrutura geral do
aplicativo. Ele especifica componentes como
atividades, serviços, receptores de broadcast,
permissões, e outros elementos importantes que o
sistema Android precisa conhecer sobre o aplicativo.
Arquivo principal: AndroidManifest.xml
2. java: Descrição: Esta pasta contém o código-fonte
Java ou Kotlin do seu aplicativo, incluindo as
atividades, serviços, e outros componentes lógicos.
com.example.helloword: Contém o código-fonte
principal do aplicativo.
com.example.helloword (androidTest): Contém testes
instrumentados que são executados no dispositivo
Android. Esses testes têm acesso aos componentes do
Android e podem testar a interação real com o
sistema.
com.example.helloword (test): Contém testes
unitários que são executados na JVM local, sem a
necessidade de um dispositivo ou emulador. Eles são
rápidos e ideais para testar a lógica da aplicação
sem envolver o Android framework.
Programação para Android
1
2
3
3. res (resources): Descrição: Esta pasta contém
todos os recursos não-códigos, como layouts,
strings, imagens, e temas que seu aplicativo usa.
Subpastas:
drawable: Contém arquivos gráficos como imagens PNG,
JPEG, XML para botões e formas personalizadas.
layout: Contém arquivos de layout XML que definem a
estrutura visual da interface de usuário, como a
organização dos botões, textos e outras views na
tela.
menu: Contém arquivos XML para menus, como menus de
opções e menus de contexto.
mipmap: Contém ícones de aplicativos em várias
resoluções. A pasta mipmap é usada em vez de
drawable para ícones de aplicativos porque esses
ícones são tratados de forma diferente, como para
lançamento e exibição em várias telas.
navigation: Contém arquivos de navegação que definem
as regras de navegação entre atividades e fragmentos
no seu aplicativo.
values: Contém arquivos XML de valores, como
strings, dimensões, estilos e cores que são
reutilizados em todo o aplicativo.
xml: Contém arquivos XML arbitrários que podem
definir configuraçõesde preferência, referências,
etc.
4
Programação para Android
1
2
3
4. Gradle Scripts: Descrição: Contém arquivos de
script Gradle usados para configurar como o projeto
é compilado, testado e implementado. Os principais
arquivos incluem build.gradle para o projeto e para
cada módulo (como app).
Cada uma dessas pastas e arquivos desempenha um
papel crucial na organização e na construção do
aplicativo Android, seguindo as melhores práticas
estabelecidas pela Google
4
Programação para Android
Este código define a estrutura básica de uma interface de usuário em
um aplicativo Android.
O RelativeLayout é configurado para ocupar toda a tela do
dispositivo e tem um espaçamento interno (padding) de 16dp em todos
os lados. Neste layout, você pode adicionar outros elementos de
interface, como botões, textos, etc., e posicioná-los relativamente
uns aos outros.
Programação para Android
:
• É o layout raiz do arquivo activity_main.xml. O RelativeLayout é um tipo de layout no
Android que organiza os elementos baseando-se em suas posições relativas uns aos
outros. Por exemplo, você pode posicionar um TextView à esquerda de um Button ou um
Button abaixo de um TextView.
xmlns:android="http://schemas.android.com/apk/res/android":
• Os atributos prefixados com android: pertencem ao esquema de atributos do Android.
Este é o namespace XML.
• android:layout_width="match_parent": Este atributo define a largura do
RelativeLayout. O valor "match_parent" significa que o layout ocupará toda a
largura disponível na tela do dispositivo, ou seja, "corresponde ao pai".
Programação para Android
• android:layout_height="match_parent": Similar ao atributo anterior, este define a
altura do RelativeLayout, também ocupando toda a altura disponível na tela.
• android:padding="16dp": Este atributo adiciona um espaçamento interno de 16dp
(density-independent pixels) em todos os lados do RelativeLayout. Isso garante que o
conteúdo dentro do layout não toque diretamente nas bordas do layout, proporcionando
um pouco de espaço ao redor do conteúdo.
• android:id: Este é o atributo que define um identificador único para o elemento dentro
do layout. Esse ID é usado para referenciar o elemento programaticamente no código
Java ou Kotlin.
Programação para Android
• @+id/: O prefixo @+id/ é usado quando você está criando um novo ID para um elemento. O
símbolo + antes de id indica ao compilador que este ID é novo e precisa ser adicionado
ao recurso de IDs gerenciados pelo Android.
• Se o ID já existisse em outro lugar, apenas @id/ seria utilizado, sem o +.
• button: Este é o nome específico que você está dando ao ID. Em um layout típico,
button pode ser substituído por qualquer nome que faça sentido para o seu projeto,
como submit Button, loginButton, ou myButton. Este nome deve ser único dentro do mesmo
layout para evitar conflitos.
Programação para Android
• package com.example.helloword;: Esta linha define o pacote ao qual a classe
MainActivity pertence. Pacotes são usados para organizar classes e evitar conflitos de
nome. Neste caso, com.example.helloword é o nome do pacote. Normalmente, os pacotes
seguem a convenção de usar o nome do domínio da empresa (invertido), seguido por nomes
específicos do projeto ou módulos.
• import android.os.Bundle;: Importa a classe Bundle do pacote android.os. O Bundle é
usado para passar dados entre activity ou para salvar o estado da activity quando, por
exemplo, a orientação da tela muda.
• import android.view.View;: Importa a classe View, que é a classe base para todos os
componentes de interface do usuário em Android, como botões, campos de texto, etc.
Programação para Android
• import android.widget.Button;: Importa a classe Button, que representa um botão na
interface do usuário. Esta classe fornece métodos para manipular o botão, como definir
o texto ou escutar eventos de clique.
• import android.widget.TextView;: Importa a classe TextView, que representa um
componente de texto na interface do usuário. Esta classe é usada para exibir texto ao
usuário e oferece métodos para definir e alterar o conteúdo de texto.
• import androidx.appcompat.app.AppCompatActivity;: Importa a classe AppCompatActivity
do pacote androidx.appcompat.app. Esta é uma classe base que fornece compatibilidade
com versões anteriores do Android, permitindo que você use recursos mais recentes do
Android em dispositivos mais antigos. AppCompatActivity também fornece suporte para a
barra de ações (Action Bar) e outros elementos de interface moderna.
Programação para Android
• public class MainActivity extends AppCompatActivity {: Definição de Classe: Esta linha
define a classe MainActivity, que é a classe principal da atividade (ou tela) do
aplicativo.
• Extends AppCompatActivity: A classe MainActivity está estendendo (extends) a classe
AppCompatActivity, o que significa que ela herda todas as funcionalidades de
AppCompatActivity. Isso permite que a MainActivity utilize recursos de compatibilidade
de interface de usuário, como a ActionBar, em versões mais antigas do Android.
• private TextView label;: Declaração de Variável: Esta linha declara uma variável
privada chamada label do tipo TextView. TextView é um componente de interface de
usuário no Android que exibe texto na tela. Neste caso, label será usado para
referenciar um elemento TextView no layout XML (como o TextView que você definiria em
activity_main.xml).
• private Button button;: Declaração de Variável: Esta linha declara uma variável
privada chamada button do tipo Button. Button: Button é um componente de interface de
usuário no Android que representa um botão clicável. Neste caso, button será usado
para referenciar um elemento Button no layout XML.
Programação para Android
Programação para Android
• @Override: Este é um anotador que indica que o método onCreate() está sobrescrevendo
um método da classe pai (AppCompatActivity). Em outras palavras, você está fornecendo
uma implementação específica para esse método na sua classe MainActivity.
• protected void onCreate(Bundle savedInstanceState): Este é o método onCreate(), que é
chamado quando a atividade é criada pela primeira vez. Ele configura a atividade
inicial, incluindo a interface do usuário.
• super.onCreate(savedInstanceState);: Esta linha chama o método onCreate() da
superclasse (AppCompatActivity). Isso é necessário para garantir que a atividade seja
corretamente configurada, incluindo a restauração de qualquer estado salvo.
• setContentView(R.layout.activity_main);: Define o layout da atividade para o arquivo
XML activity_main.xml, que contém a interface do usuário (UI) para esta atividade.
Isso significa que todos os componentes de UI definidos nesse arquivo XML serão
carregados na tela.
• label = findViewById(R.id.textView);: Esta linha encontra o componente TextView no
layout activity_main.xml cujo ID é textView e o associa à variável label. Agora, você
pode manipular o TextView através da variável label no código.
• button = findViewById(R.id.button);: Similarmente, esta linha encontra o componente
Button no layout cujo ID é button e o associa à variável button. Isso permite que você
manipule o botão no código.
Programação para Android
• button.setOnClickListener(new View.OnClickListener() { ... } );: Esta linha define um
OnClickListener para o botão. Um OnClickListener é uma interface que detecta quando o
botão é clicado e executa o código dentro do método onClick(View v).
• @Override public void onClick(View v):Este método é chamado quando o botão é clicado.
A anotação @Override indica que este método está implementando o método onClick() da
interface View.OnClickListener.
• label.setText("Hello, World!");: Dentro do método onClick, esta linha de código altera
o texto do TextView para "Hello, World!". Assim, ao clicar no botão, o texto exibido
na tela será alterado para "Hello, World!".