Guia de Referência: Orientação a Objetos em Java
DevMedia - Códigos e Jobs para Programadores
DevMedia Códigos ▼
DevCast
Carreiras Programador
Assista Offline
Web-Currículo
Guia de Referência Orientação a Objetos em Java	Nesse Guia de Referência você encontrará todo o conteúdo que precisa para aprender a programar Orientado a Objetos em Java, paradigma padrão dessa linguagem e que visa o desenvolvimento com base em objetos.	Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Pilares da Orientação a Objetos
Coesão e acoplamento
Princípios SOLID
A Orientação a Objetos é o paradigma de programação mais utilizado para o desenvolvimento de sistemas e tem como principal característica o planejamento e implementação do software a partir da representação de 'coisas' da vida real por meio de objetos.
Antes desse paradigma era comum criarmos sistemas utilizando o paradigma de programação estruturada. Porém, devido a limitações, aos poucos essa opção começou a ser substituída, como mostra a Figura 1.
Figura 1. Programação Estruturada x Orientação a Objetos
Para compreender as diferenças entre a Programação Orientada a Objetos e a Estruturada, acesse:
Artigo: Programação Orientada a Objetos x Programação Estruturada Artigo: Paradigmas de Programação: Estruturado e Orientado a Objetos DevCast:
Por que adotamos Orientação a Objetos? - Parte 1 novo DevCast:
Por que adotamos Orientação a Objetos? - Parte 2 novo Em Java, por uma "coincidência planejada" :), tudo são objetos, o que reforça ainda mais a relação entre a linguagem e esse paradigma. Portanto, se você pretende se tornar um bom programador Java, aprender Orientação a Objetios (OO) é fundamental. E agora, o que faço? Não se preocupe, os conteúdos abaixo ensinarão tudo o que você precisa para isso:
Curso Java: Introdução à orientação a objetos Curso: Básico de Java e Orientação a Objetos Artigo: Orientação a Objetos em Java: uma abordagem completa
Artigo: Aprendendo POO e Java
Uma alternativa/complemento a esse conteúdo é aprender Orientação a Objetios (OO) em Java com a ferramenta BlueJ. Preparamos um vídeo sobre isso. Confira!
Vídeo: Java e BlueJ: Aprendendo Programação Orientada a Objetos
Ao planejar a programação baseada em objetos, esse paradigma trouxe consigo uma série de conceitos, os quais levam a um código mais fácil de entender, manter e reutilizar. Esses conceitos são a abstração, encapsulamento, herança e polimorfismo, introduzidos no link abaixo:
DevCast: Os pilares da Programação Orientada a Objetos novo Artigo: Os 4 pilares da Programação Orientada a Objetos
Artigo: Abstração, Encapsulamento e Herança: Pilares da POO em Java
O encapsulamento é o pilar da Orientação a Objetos< que nos permite ocultar informações e, ao mesmo tempo, atribuir segurança ao código. Quando encapsulamos o acesso a uma variável, por exemplo, não importa, para o objeto que consome essa informação (o cliente), se o valor é obtido lendo o dado em memória ou se foi necessário acessar um banco de dados.
Imagine que você esteja em um restaurante e faça um pedido. É importante para você saber qual panela está sendo utilizada, a ordem de preparo dos nutrientes, entre outras coisas? Então, encapsular é a "arte" de deixar acessível ao cliente apenas aquilo que ele precisa saber. Para aprender mais sobre isso, acesse:
Artigo: Encapsulamento no Java: Primeiros passos
Artigo: Entendendo o encapsulamento em Java
E a herança? Como assim programar uma herança? Você herdou características de seus pais, avós e de outras gerações passadas, não é mesmo? Na Orientação a Objetos, quando precisamos fazer com que a classe B possua características de outra, definimos via código que a classe B herda dessa outra. Interessante, não? :) Ainda está achando um pouco confuso? Acesse o post:
Artigo: Entendendo e aplicando herança em Java
O polimorfismo é um pilar da Orientação a Objetos que tem forte ligação com a herança. Algumas vezes, quando herdamos uma característica, precisamos adicionar a ela um comportamento diferente. Por exemplo: todo animal sabe correr, porém, cada um corre de uma maneira diferente. Para aprender como utilizar polimorfismo em Java, acesse:
Vídeo: Polimorfismo em Java Artigo: Java Orientado a Objetos: Polimorfismo em ação Artigo: Sobrecarga e sobreposição de métodos na orientação a objetos
Ao aplicar corretamente esses conceitos você terá como resultado um código eficiente, de fácil manutenção e reuso. Saiba que um código de qualidade não envelhece e você poderá reutilizá-lo em vários projetos. O post abaixo retrata esse assunto.
Artigo: POO: reusabilidade e eficiência em seu código
Você já deve ter ouvido falar que um bom código precisa ter alta coesão e baixo acoplamento. No entanto, o que é a coesão e o acoplamento? A coesão é uma medida que indica quão bem delimitado está cada módulo do nosso código. Caso ele faça mais coisas do que deveria, dizemos que temos um módulo com baixa coesão. Já o acoplamento mede o grau de dependência de um módulo em relação aos demais. Caso ele dependa de muitos módulos, dizemos que ele está com acoplamento alto. Essas situações devem ser evitadas, pois tornam o código muito mais difícil de manter e evoluir.
Para aprender mais detalhadamente sobre esse assunto, acesse:
Artigo: Orientação a Objetos: princípios de OO para arquiteturas robustas
Após compreender os pilares da orientação a objetos na teoria e na prática, um importante passo na busca pelo código de qualidade é aprender sobre os princípios SOLID.
Esses princípios nos ajudam a pensar no problema a ser modelado de forma orientada a objetos, propondo definições que nos levam a um design de código coeso e com baixo acoplamento, o que o torna fácil de ler, manter e reutilizar.
E por que esse nome, por que SOLID? Esse termo é um acrônimo para as cinco "regras" que o compõem:
S - Single Responsibility Principle - O Princípio da Responsabilidade Única define que cada classe deve ter apenas uma responsabilidade;
O - Open Closed Principle - O Princípio do Aberto Fechado define que uma classe deve ser extensível (aberta para extensões) por outras classes, sem que para isso precise ser modificada (fechada para modificações);
L - Liskov Substitution Principle - O Princípio da Substituição de Liskov está relacionado ao uso da herança e dita que devemos ser capazes substituir a classe filha pela classe pai sem que o funcionamento do software seja prejudicado;
I - Interface Segregation Principle - O Princípio da Segregação de Interfaces preza pela correta definição de interfaces, de forma que os clientes que a consumam tenham acesso apenas àquilo que de fato é necessário;
D - Dependency Inversion Principle - O Princípio da Inversão de Dependências sinaliza que devemos depender apenas de classes abstratas, e não de classes concretas;
Para se aprofundar de fato nesse assunto, acesse os posts abaixo?
DevCast: SOLID: Melhorando a qualidade dos seus projetos orientados a objetos novo
Artigo: Utilização dos princípios SOLID na aplicação de Padrões de Projeto novo
Artigo: Desenvolvendo software sólido com Java novo
Artigo: Qualidade no código Java com os princípios S.O.L.I.D. novo
Artigo: Arquitetura - O Princípio da responsabilidade única novo
Agora que você já conhece os pilares desse paradigma, que tal pôr as mãos na massa? Pode dizer! Já estava na hora, não é mesmo? :)
Artigo: Programação orientada a objetos com Java
Artigo: Orientação a Objetos: Da teoria à prática com a linguagem UML
Como apoio a esse conteúdo, não deixe de verificar os posts abaixo e aprenda como solucionar e/ou evitar os erros mais cometidos quanto adotamos o paradigma OO.