Inicia-se uma série de documentos introdutórios à computação.
Começaremos com Java e orientação a objetos.
Conceitos esperados que o leitor compreenda: Máquina Virtual Java(JVM), Algoritmo, Montagem(Assembly), Interpretação(Interpreter), Compilação(Compiler), Depuração(Debugger), API(Application Programming Interface).
Conceitos apresentados: Linguagem Java, Objeto(Object), Herança(Inheritance), Interface, Empacotamento(Package), Encapsulamento(Data Encapsulation), Modularidade(Modularity), Ocultamento(Information-hiding), Reutilização de Código(Code Re-use), Conectividade e Depuração(Pluggability and Debugging).
Este documento é um resumo, uma tradução parcial, do tutorial de iniciação Java da Oracle.
Object-Oriented Programming Concepts
http://download.oracle.com/javase/tutorial/java/concepts/index.html
Java e Conceitos de Programação Orienta a Objetos(POO)
Objeto/Object é um corpo(caixa, coisa) de estados(campos/fields), comportamentos(métodos/methods) e outros objetos.
Classe/Class é um modelo a partir do qual os objetos são criados. Pura descrição e implementação de objetos.
Herança/Inheritance é um poderoso mecanismo de organização e estruturação de programas, que permite fornecer estados e comportamentos para novas classes.
Interface/Interface é um contrato entre uma classe e o mundo à sua volta. Um compromisso de comportamento.
Pacote/Package é uma forma de organização de classes e interfaces, um recipiente de suas uniões.
Encasupalmento/Data encapsulation é um princípio fundamental da orientação a objetos. Significa ocultamento de estados, a requisição que estados só serão alterados por métodos internos. Permite dar controle ao objeto de como o mundo externo pode usá-lo.
Vantagens de usar objetos
Modularidade/Modularity permite ao código ser escrito e mantido independentemente de outros códigos/objetos.
Ocultamento de informaçaões/Information-hiding - Ao forçar que a interação entre objetos se dê apenas através de métodos, os detalhes da implementação destes são escondidos do resto do mundo.
Reutilização de código/Core re-use - Se um objeto existe, ele pode ser usado. Permite usar objetos de outras pessoas e herdar características.
Conectividade e depuração/Pluggability and debugging - Da mesma forma que no mundo real, se um objeto se tornar problemático, você pode substituí-lo. Se um parafuso quebra, você não troca a máquina, troca somente o parafuso.
Herança/Inheritance em Java
Java permite que uma classe tenha uma superclasse e que cada superclasse tenha infinitas subclasses.
// Se você nunca viu código java,
// saiba que tudo escrito após duas
// barras é comentário, desde que
// não mude de linha.
class MountainBike extends Bicycle{
// Arquivo/File MountainBike.java
// codes ...
}
Assim fica muito fácil perceber a importância de usar e criar documentação - assunto que num futuro, em outros tópicos, poderá ser comentado.
Nota: Não é preciso fornecer um construtor, mas tenha cuidado. Deste modo o compilador criará um construtor padrão e sem argumentos, para qualquer classe sem construtor. Caso sua classe tenha uma superclasse, o compilador irá utilizar o construtor sem argumentos dela. Caso sua classe não tenha uma superclasse explícita, o compilador subordinará sua classe à classe Object(java.lang.Object), que possui um construtor sem argumentos.
Interface/Interface em Java
Como dito anteriormente, objetos se relacionam com o universo circundante através dos métodos que eles expõem. Por isso, são os próprios métodos a interface com o mundo.
Por exemplo, os botões da parte da frente de sua televisão ocultam os recursos físicos - fios, componentes, circuitos e correntes elétricas - necessários para quando você apertar o "power" sua televisão simplesmente ligar ou desligar.
interface Bike{
// Arquivo/File Bike.java
// Assinaturas dos métodos, por exemplo:
public void escreva(String a);
}
Uso na classe.
class Bicycle implements Bike{
// File Bicycle.java;
public void escreva(String a){
// Repete-se a assinatura, mas
// completa-se os métodos.
System.out.print(a);
}
}
Todos os métodos implementados de uma interface precisão ser públicos(public), afinal, esta é a grande razão da existência de interfaces.
Pacotes/Package em Java
Pacote é o nome dado a um conjunto de classes, interfaces e pacotes. Concretamente é apenas um diretório que organiza classes afins.
Sempre usamos pacotes em Java, um grande exemplo é a própria API Java.
Para fazer um pacote, primeiro devemos pensar na organização dos arquivos.
.[_raiz_] (*Simulação de pastas num computador)
\cvv
\eu sei que vou te amar.mp3
\chinelo
\diramos
\feijão
\aulasdedota.txt
\ferjor
\nossa primeira música.mp3
\gogoboy
\lolo
\ofernandofilo
\javacli
\Escreva.java
\javagui
\Oi.java
\Ola.java
\shirley (*a manca da novela Torre de Babel)
\soneca
\xitão
\Bicycle.java
\Bike.java
\HelloWorld.java
\MountainBike.java
\Principal.java
Para ser importado da raiz o arquivo "Escreva.java" deve iniciar-se com:
package ofernandofilo.javacli;
// Perceba que para o sistema, o endereço do arquivo é:
// ofernandofilo\javacli\Escreva.java
// Codes...
E exatamente por isso, o arquivo só é acessável pela raiz. Não poderá executá-lo de dentro de qualquer outro diretório que não seja a raiz. Não executará mesmo de dentro de sua própria pasta.
Como demonstrado, a hierarquia de diretórios de um pacote é separada por pontos ao invés de barras e contra-barras.
Porém, no restando do código, uma classe de um pacote em nada se difere de uma classe comum.
package ofernandofilo.javacli;
// Deve haver o arquivo em
// ofernandofilo\javacli\Escreva.java
public class Escreva{
public static void nl(String a){
System.out.println(a);
}
}
E para usá-lo devemos estar na raiz e importá-lo.
import ofernandofilo.cli.Escreva;
// ou
import ofernandofilo.cli.*;
// O presente arquivo está em <raiz>\Principal.java
class Principal{
public static void main(String[] args){
Escreva.nl("Oi, pacote");
}
}
Exercícios
1. Objetos do mundo real possuem _______ e _______.
2. Os estados de um objeto(software) são armazenados em _______.
3. Os comportamentos de um objeto(software) são descritos em _______.
4. O ocultamento de dados do universo circundante e a manipulação destes dados apenas por meio de métodos é conhecido como _______.
5. A descrição textual de um objeto(software) é chamada _______.
6. Comportamentos comuns podem ser definidos na _______ e herdados numa _______ usando a palavra _______.
7. Uma coleção de assinatura de métodos, sem implementação, é chamada _______.
8. Um espaço designado (enrensga, tradução de : "namespace", "espaço de nomes" ou "espaço nominal" é horrível. Território nomeado, Recorte espacial nomeado, recorte nomeado, parte específica, ambiente epítico, região titulada, ambiente cognito, conjuto apelidado...) para organização de classes e interfaces por funcionalidades é chamado _______.
9. O que representa a sigla API _______.
Respostas nos comentários.
abraços
Nenhum comentário:
Postar um comentário