terça-feira, 27 de janeiro de 2009

Porquê Java?

Porquê desenvolver em Java???
Isso pode levar a uma séria discussão não é?
Na minha humilde opnião Java já não é mais uma novidade há muito tempo e sim uma imensidão de conhecimento, pois a cada ano que passa surgem bons e novos recursos para Java sendo assim não a vejo como uma linguagem passageira, que surge como sendo fantastica e logo depois desaparece ao contrário ela é uma linguagem com uma recursividade muito grande.
Vejo hoje o mercado de Java muito aquecido sendo ele em sua maioria com sistemas Web e também é nas tecnologias web que encontramos tiversos resursos para aproveitar.

E para aproveitar um pouquinho os recursos dessa Linguagem vou abortar um pouco sobre um dos fundamentos de Java, a Orientação a Objetos, uma das principais vantagens da POO é a reutilização de código, onde você não necessita reescrever um código já feito, no máximo você fará modificações através de Polimorfismo(explicarei mais adiante).

1- Polimorfismo: é um recurso utilizado para métodos com o mesmo nome onde esses métodos podem realizar algoritmos diferentes devido à sua assinatura. Por exemplo:

public void pesquisarLivro(String titulo) { ... }

public void pesquisarLivro(String titulo, String editora){ ... }

Os dois métodos acima tem o mesmo nome porém possuem assinaturas diferentes, quando fazemos a chamada desses métodos ela utilizando o mesmo nome para os dois métodos e dependento dos parâmetros passados o Java identifica qual o método que será chamado.

2- Encapsulamento: é um recurso que temos para poder poder restringir que outras classes tenham visibilidade da implementação de seus métodos, sendo assim somente a própria classe tem visibilidade sobre sua implementação, ou seja, só mostramos para outras classes o que fazemos e escondemos a implementação de como fazer.
Um bom exemplo é quando encapsulamos atributos de uma classe ou seja atribuimos sua visibilidade para private onde somente a própria classe poderá ver a implementação desses atributos, e se alguma classe quiser alterar esses valor ela poderá fazer porém através de métodos que manipulam esses atributos sem mostrar como fazem isso, Ex.:

private String titulo;

public String getTitulo(){
return this.titulo;
}

public void setTitulo(String titulo){
this.titulo = titulo;
}

3- Herança: Uma das mais interessantes é um recurso utilizado para que uma classe consiga herdar as funcionalidades de outra classe, sendo assim evitamos a reescrita de código como no exemplo a seguir.

Temos 2 classes Cliente e Pessoa, todo Cliente tem as mesmas características de Pessoa porém um Cliente possui características (funcionalidades) a mais do que uma Pessoa, então utilizando o conceito de herança você não precisa reescrever toda a classe Pessoa naa classe Cliente.
Existe uma palavra reservada em Java que é utilizada para indicar Herança que é extends, vamos ver como utilizar a herança em uma classe.

public class Cliente extends Pessoa{
//novo método da classe Cliente
public void realizarPagamento(String cdCliente, Double valor){ ... }

//métodos herdados não precisam ser reescritos apenas utilizados
}

É isso ai galera vamos estudar um pouquinho mais sobre POO nos próximos posts, se surgirem dúvidas, críticas ou sugestões deixem seus comentários nos post.
Até a próxima.

3 comentários:

  1. Parabéns pelo blog! Achei ele pelo GUJ e prometo que darei uma espiada com frequência!

    Me chamo Fernando também e sou formado em Sistemas de Informação, sou novato em Java e conto com a sua ajuda nessa caminhada.

    Me add no MSN qdo puder: fernandobarroslima2@hotmail.com

    Abraços!

    ResponderExcluir
  2. Fernando,
    O Polimorfismo na verdade é o que o próprio nome diz, "Muitas formas". Mas é com relação ao mesmo nome de método e muito ligado à herança, isto é, "o polimorfismo permite que referências de tipos de classes mais abstratas representem o comportamento das classes concretas que referenciam"[1]

    Exemplo[2]

    interface Animal
    {
    String getName();
    String talk();
    }

    abstract class AnimalBase implements Animal
    {
    private final String name;
    protected AnimalBase(String name) {
    this.name = name;
    }
    public String getName() {
    return name;
    }
    }

    class Cat extends AnimalBase
    {
    public Cat(String name) {
    super(name);
    }
    public String talk() {
    return "Meowww!";
    }
    }

    class Dog extends AnimalBase
    {
    public Dog(String name) {
    super(name);
    }
    public String talk() {
    return "Arf! Arf!";
    }
    }

    public class TestAnimals
    {
    // prints the following:
    // Missy: Meowww!
    // Mr. Bojangles: Meowww!
    // Lassie: Arf! Arf!
    public static void main(String[] args) {
    Animal[] animals = {
    new Cat("Missy"),
    new Cat("Mr. Bojangles"),
    new Dog("Lassie")
    };

    for (Animal a : animals) {
    System.out.println(a.getName() + ": " +
    a.talk());
    }
    }
    }

    Verifique que vc não precisou informar no loop (for) que tipo de Animal estava na coleção, mas, por polimorfismo, ele executou os métodos de cada classe concreta.

    Referências:
    [1] http://pt.wikipedia.org/wiki/Polimorfismo
    [2] http://en.wikipedia.org/wiki/Polymorphism_in_object-oriented_programming#Java


    Parabéns pela iniciativa e bons códigos !!!

    ResponderExcluir
  3. Ae Fernandão, parabéns pelo blog! Ta bem massa, vou aparecer mais por aqui rss.

    ResponderExcluir