Diversos, Java

Introdução a Orientação a Objetos – Primeira parte

A orientação a objetos, é um paradigma de análise, projeto e programação de sistemas de software baseado na composição e interação entre diversas unidades de software chamadas de objetos.
O termo orientação a objetos pressupõe uma organização de software em termos de coleção de objetos discretos incorporando estrutura e comportamento próprios.
O enfoque de modelagem por objetos, vê o mundo como uma coletânea de objetos que interagem entre si, apresentam características próprias que são representadas pelos seus atributos (dados) e operações (métodos ou serviços).
Resumidamente, a mudança de enfoque (entre estruturado e orientado a objetos) é justificada pelo fato de que objetos existem na natureza muito antes de haver qualquer tipo de aplicação deles pelo negócio. Equipamento, pessoas, minerais, petróleo, etc., existem por si só e apresentam características peculiares representadas pelos seus atributos e, adiante, pelo seu comportamento no mundo real.

Este tipo de abordagem, oferece os seguintes benefícios:

Manter a modelagem do sistema, e em decorrência, sua automação o mais próximo possível de uma visão conceitual do mundo real;
Servir de base à decomposição e modelagem do sistema nos dados, que é o elemento mais estável de todos aqueles que compõem um sistema de informação e
Oferecer maior transparência na passagem da fase de modelagem para a de construção através da introdução de detalhes, não requerendo uma reorganização do modelo.

Um aspecto interessante da teoria de objetos é a sua característica intríseca de analisar o mundo como ele é, permitindo organizar resultados de maneira mais fácil e natural. Procura representar o mundo real como o vemos, pessoas, lugares e coisas existentes que se comportam como objetos e que possuem características próprias de atributos e operações. Por definição, a teoria de objetos espelha o mundo de forma mais simples do que modelos algorítmicos ou estruturados.

Principais palavras chaves na Teoria da Orientação a Objetos:

Atributo:
Característica particular de uma ocorrência da classe.
(Indivíduo possui nome, sexo, data de nascimento)

Classe:
Agrupamento de objetos similares que apresentam os mesmos atributos e métodos.
(Indivíduo, caracterizando as pessoas do mundo)

Encapsulamento:
Combinação de atributos e métodos em uma classe.
Atributo: data do nascimento.
Método: cálculo da idade a partir da data do nascimento.

Especificação:
Atributos e métodos diferentes de uma subclasse, acrescentando ou substituindo características herdadas da classe pai.
Subclasses [Organização] e [indivíduo] acrescentam atributos e métodos distintos da superclasse.

Estado:
Situação de um objeto em um dado instante de tempo.
(Emitindo nota fiscal)

Evento:
Uma ocorrência significativa no mundo real que deve ser tratada.
(Pedido tomado, entrega efetuada, ponto de solicitação de material atingido)

Generalização:
Atributos e operações comuns compartilhados por classes.
Superclasse [Parte] ou [Pessoa] como generalização das subclasses [Organização] e Indivíduo.

Herança:
Compartilhamento pela subclasse dos atributos e operações da classe pai.
Subclasse Eucalipto compartilha atributos e operações da classe Árvore.

Instância de classe:
Uma ocorrência específica de uma classe.
É o mesmo que objeto. Uma pessoa, uma organização, um equipamento, uma localização geográfica.

Mensagem:
Uma solicitação entre objetos para invocar certo método.
Informar a idade da pessoa.

Objeto:
Elemento do mundo real (natureza).
Sinônimo de instância de classe.
Uma pessoa: “Fulano de Tal”.

Métodos (serviços):
Lógica contida em uma classe para designar-lhe um comportamento.
Cálculo da idade de uma pessoa em uma classe.

Polimorfismo (sobrecarga):
Habilidade para usar a mesma mensagem para invocar comportamentos diferentes do objeto.
Chamada da operação: “calcularSaldo” de correntista. Invoca as derivações correspondentes para cálculo de saldo de poupança, renda fixa, fundo de ações, etc.

SubClasse:
Característica particular de uma classe.
Classe Árvore -> subclasses Ipê, Jacarandá, Eucalipto, etc.

Conceitos de Orientação a Objetos:

Abstração OO:

Habilidade mental que permite aos seres humanos visualizarem os problemas do mundo real com vários graus de detalhe, dependendo do contexto corrente do problema.
[Rumbaugh]

Abstração é a habilidade de concentrar nos aspectos essenciais de um contexto qualquer, ignorando características menos importantes ou acidentais. Em modelagem orientada a objetos, uma classe é uma abstração de entidades existentes no domínio do sistema de software.
(Um objeto é uma ocorrência específica (instância) de uma classe).

Por exemplo, imaginamos a abstração referente a classe Animais. Há várias entidades na classe Animais como Anfíbios, Répteis e Mamíferos que são também sub-classes da classe Animais, onde há objetos que contêm cada sub-classe como Ser humano, Jacaré e outros.

Objeto:

Um objeto é uma ocorrência específica (instância) de uma classe e é similar a uma entidade/tabela no modelo relacional, somente até o ponto onde representa uma coleção de dados relacionados com um tema comum.
A diferença entre objeto e entidade/tabela é que o primeiro é uma ocorrência de uma classe, que, por sua vez, é um conjunto de objetos similares em atributos e métodos onde a estrutura de classe define como o objeto é criado e se comporta durante a vida. Um objeto possui todo o que é necessário para conhecer a si próprio, há o encapsulamento de métodos e atributos atribuindo-lhe vida própria.
É uma abstração de alguma coisa em um domínio do problema, de maneira autocontida e identificável, refletindo a capacidade de manter um estado de si, encapsulando valores de atributos e serviços exclusivos.
Não muda de identidade, comportamento ou atributos definidos por sua classe, podendo conter dados privados ou atributos que são alterados para representar o estado atual do objeto.
Atributos e operações utilizados para controlar seu comportamento, são encapsulados dentro do objeto, às vezes fora do alcance dos demais objetos.

mensagem:

Objetos se comunicam através de mensagens, isto é, um sinal enviado de um objeto a outro requisitando serviços através da execução de uma operação. Trata-se de um ciclo completo onde uma mensagem é enviada a um objeto, métodos são executados dentro desse com base nos dados de seu alcance na hierarquia de classes, e uma mensagem contendo o resultado da operação é enviada ao objeto solicitante. Funciona como uma fábrica que recebe uma ordem de produção (mensagem de solicitação), processa esta ordem (métodos) utilizando matéria-prima (atributos) e gera um produto final (mensagem de resposta).

Polimorfismo:

Adjacente ao conceito de mensagem, há o conceito de polimorfismo, cuja palavra é originária do grego “muitas formas”. Tais formas se referem aos vários comportamentos que uma mesma operação pode assumir, assim como à capacidade de uma variável referir-se a objetos diferentes que preenchem certas responsabilidades como um conceito em teoria de tipo no qual um nome (como uma declaração de variável) pode denotar objetos de muitas subclasses diferentes que estão relacionadas por alguma superclasse comum, assim, qualquer objeto denotado por esse nome tem a capacidade de responder a algum conjunto comum de métodos de formas diferentes.

Classe:

Classe é uma coleção de objetos que podem ser descritos com os mesmos atributos e os mesmos métodos. Representa a idéia ou um conceito simples e categoriza objetos que possuem propriedades similares, configurando-se em um modelo para a criação de novas instâncias.

Na construção de classes, há a possibilidade de ocorrer uma conexão semântica de elementos de modelo entre pai e filho na qual uma classe filha (subclasse) herda as propriedades de seu pai (super classe) direta ou indiretamente. Cada classe pode ter suas propriedades particulares herdadas diretamente da classe pai ou substituída / mascarada nessa transição, assim somente propriedades diferentes serão declaradas na classe filha. Quando é criada uma nova classe a partir de uma existente, a nova classe (uma subclasse) automaticamente herda todas as propriedades e comportamentos da classe base (a super classe).
Uma classe base estabelece uma interface comum para um grupo de classes ou descreve o alcance de mensagens para os objetos dentro de uma classe. Esse mecanismo retrata mais um conceito da orientação a objetos: a herança.

Herança:

Herança é a capacidade de um novo objeto tomar atributos e operações de um objeto existente, permitindo criar classes complexas sem repetir código, a nova classe simplesmente herda seu nível base de características de um antepassado na hierarquia de classe. Também pode reimplementar (ou sobreescrever) métodos selecionados, já que subclasses tiram proveito do comportamento das classes acima na hierarquia passando propriedades de uma classe pai a uma classe filha.

Por exemplo, a classe Automóvel pode conter propriedades genéricas incluindo potência, capacidade de passageiros, etc. A subclasse Automóvel Esportivo pode herdar as propriedades da classe Automóvel e então modificar as propriedades. A subclasse Porsche pode herdar todas as propriedades da classe Automóvel Esportivo e assim modificar ou adicionar as propriedades específicas a objeto “Porsche”. Se uma classe herda comportamentos (métodos) e atributos de mais de uma classe é denominado de herança múltipla, uma variação semântica de generalização na qual um tipo pode ter mais de um supertipo.

Dependência e Coesão de classes:

Dependência refere-se ao conhecimento que uma classe possui de outra – o objetivo é o de minimizar a dependência para evitar impactos em uma classe decorrentes de modificações em outra classe. Coesão é uma medida de integridade conceitual de uma nova classe – o objetivo nesse caso, é o de maximizar a coesão pra assegurar agrupamento de métodos e com isso reduzir esforços de manutenção.

Anúncios

3 comentários sobre “Introdução a Orientação a Objetos – Primeira parte

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s