Unidade A - Revisão de Conceitos de Orientação a Objetos

Caro (a) Aluno (a):

Nesta disciplina, o principal objetivo é que os alunos possam analisar, projetar e desenvolver soluções de software sob o paradigma da orientação a objetos para sistemas Web, utilizando Java e suas diversas tecnologias. Para o bom acompanhamento desta disciplina, são necessários os conteúdos trabalhados nas disciplinas de Linguagem de Programação Orientada a Objetos, Análise e Projeto de Sistemas de Informação Orientados a Objetos e também da Linguagem de Programação Visual.

O objetivo básico desta unidade é revisar os conteúdos e conceitos envolvidos principalmente nas disciplinas de Linguagem de Programação Orientada a Objetos, Análise e Projeto de Sistemas de Informação Orientados a Objetos e, após, realizar uma introdução aos sistemas Web baseados em Java.

Conceitos de Orientação Objetos

Como visto nos conteúdos anteriores, o paradigma de programação orientado a objetos é o paradigma de programação que utiliza objetos (que possuem um estado e comportamento), criados a partir de modelos, para representar e processar dados, usando programas de computadores. As técnicas de programação incluem características como abstração, encapsulamento, modularidade, polimorfimo e herança. Desta forma, um programa orientado a objetos é composto de objetos que colaboram entre si para a realização de tarefas.

A seguir, revisaremos os principais conceitos de orientação a objetos.

Classes: os programadores que utilizam o paradigma orientado a objetos criam e usam objetos a partir de classes, que são relacionadas diretamente com modelos. Desta forma, classes são estruturas das linguagens de programação OO para conter, para determinado modelo, os dados que devem ser representados e as operações que devem ser efetuadas com estes dados (estado e comportamento). Cada classe deve ter um nome que seja facilmente associado ao modelo que a classe representa.

Objetos: os objetos possuem um estado e comportamento e são criados a partir de um modelo (a classe). Para a representação de dados específicos usando classes será necessária a criação de objetos ou instâncias desta classe. Um objeto ou instância é a materialização de uma classe (modelo utilizado para representar dados e executar ações). Para que os objetos ou instâncias possam ser manipulados, é necessária a criação de referências a esses objetos, que são basicamente variáveis do “tipo” classe.

Atributos: os dados contidos em uma classe são conhecidos como campos ou atributos (variáveis em algumas linguagens de programação) daquela classe. Cada campo deve ter um nome e tipo, que será ou um tipo de dado nativo da linguagem ou uma classe existente na linguagem ou definida pelo programador.

Métodos: os métodos são definidos na declaração de uma classe e definem o comportamento (operações) dos objetos daquela classe (funções em algumas linguagens de programação). Estes métodos operam sobre os atributos internos e servem como mecanismo primário para comunicação entre objetos. Métodos são geralmente chamados ou executados explicitamente a partir de outros trechos de código na classe que o contém ou a partir de outras classes. Em um programa OO, os objetos de um sistema trocam mensagens para que as tarefas sejam realizadas. Esta troca de mensagens é chamada de método.

Encapsulamento: o encapsulamento é um conceito chave para trabalhar com orientação a objetos. Os objetos possuem comportamento que diz respeito a operações realizadas por um objeto e também ao modo pelo qual essas operações são executadas. O mecanismo de encapsulamento é uma forma de restringir o acesso ao comportamento interno de um objeto, ou seja, caso um objeto necessite de colaboração de outro objeto para realizar uma tarefa, ele simplesmente envia uma mensagem a este último.

Herança: a herança é outra forma de abstração em orientação a objetos, onde classes semelhantes são agrupadas em hierarquias. Cada nível de hierarquia pode ser visto como um nível de abstração, em que cada classe em um nível da hierarquia herda as características das classes dos níveis acima. Esse mecanismo, também conhecido como generalização/especialização, facilita o compartilhamento de comportamento comum entre um conjunto semelhante de classes.

Polimorfismo: o polimorfismo indica a capacidade de abstrair várias implementações diferentes em uma única interface. A mesma computação funciona para objetos de muitas formas e adapta-se à natureza dos objetos.