2011-07-12

Resumo do Tutorial Oracle Java - Parte 01

Bom dia, Goiânia.

   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