Você está na página 1de 12

Introdução

Neste presente trabalho da cadeira de fundamentos de algorimo e lógico de programação, foi


sugerido pelo docente Narciso Lumbela que se realiza˗se um trabalho cientifico de caracter
avaliativo que obedecesse todos os parametros lecionativos que tange com a abordagem do tema
Fundamentos de programação orientada a objectos.

O trabalho tem com o objectivo abordar tudo que tenha relação com o tema em vigor.

O grupo tem como principal objectivo decifrar e sanar todos os equivos em relação ao que for
abordado no trabalho.

O trabalho abordara os principais conceitos e fundamentos da orientação a objectos.

Principalmente no que tange a Classe dos objectos, Encapsulamento, Herança, Polimorfismo.

No final da apresentação o ouvinte deve ser capaz de:

 Diferenciar objectos e Classes.


 Interpretar o encapsulamento.
 Identificar os diferentes tipos de Herança.
 Interpretar o polimorfismo.

1
Historial

(Segundo, Farinelli;2007) Antigamente, há algumas décadas atrás, o paradigma que predominava


no desenvolvimento de software era o da programação estruturada. Basicamente, a grosso modo,
os softwares eram compostos por rotinas e sub-rotinas que chamavam umas às outras, além de
variáveis que tinham escopo local (dentro de rotinas / sub-rotinas) ou global. Assim como todo
paradigma, o paradigma estruturado tinha seus prós e contras e foi bastante eficiente no que se
propôs durante seus anos de domínio no mercado, além de ter sido bastante importante para a
evolução da engenharia de desenvolvimento de software.Com o passar dos anos, surgiu o
paradigma da orientação a objectos, que também não é tão novo como muitos pensam, mas que
veio a ganhar mais força na última década.

Farinelli diz também que a orientação a objectos surgiu com o objectivo de tornar o
desenvolvimento de software menos complexo e mais produtivo. A ideia era termos estruturas de
dados, que possuem estado e comportamento e colaboram entre si. Dessa forma, deixaríamos de
ter todas as rotinas e sub-rotinas “espalhadas” pelo sistema e passamos a atribuir elas a uma
dessas estruturas de dados, de forma coesa, cada qual com sua responsabilidade. Além disso,
encapsularíamos as variáveis nestas mesmas estruturas, controlando o acesso às mesmas e
tornando público apenas aquilo que for pertinente.

2
Fundamentos de programação orientada a objectos

(Segundo, YOURDON;1992) A orientação a objectos é uma tecnologia que enxerga os


sistemas como sendo colecção de objectos integrantes. Ela permite melhorar a rentabilidade e
extensibilidade dos softwares.

A tecnologia orientada a objectos é fundamentada no que, colectivamente, chamamos de modelo


de objectos, que engloba os princípios da abstracção, hierarquização, encapsulamento,
classificação, modularização, relacionamento, simultaneidade e persistência.

Classe de objecto

Classe é um tipo de dado que representa tudo aquilo que um objecto deste tipo poderá ter/fazer.
Na classe determinamos o que será armazenado em seu estado e quais comportamentos ele terá,
ela funciona como uma estrutura de referência para a criação de objectos. Uma classe pode ter
vários objectos ou pode ser instanciada diversas vezes, dando origem a diversos objectos
diferentes.

Objecto é uma instância de uma classe. É a estrutura completa, criada em memória, que irá
representar a classe com tudo o que foi definido nela, inclusive com os valores armazenados nos
seus respectivos atributos.

Uma classe representa um conjunto de objectos que possuem características e comportamentos


comuns.

3
Exemplo:

Gatos

A classe de objectos possui três conceitos fundamentais:

1. Encapsulamento 

Se refere ao agrupamento de dados com os métodos que operam nesses dados ou à restrição do
acesso directo a alguns dos componentes de um objecto, ele é usado para ocultar os valores ou o
estado de um objecto de dados estruturados dentro de uma classe, evitando o acesso directo de
partes não autorizadas a eles, também prevê o isolamento a determinados elementos do objecto
(métodos /atributos) de acordo com a necessidade de acesso a eles. Este conceito parte da
premissa de que nem todo método e atributo precisam estar visíveis e acessíveis publicamente.

Existem elementos que são pertinentes apenas ao próprio objecto, outros pertinentes aos objectos
filhos e outros que são pertinentes a todos os objectos associados.

4
Os Benefícios do Encapsulamento:

 Modularidade: o código-fonte para um objecto pode ser escrito e mantido


independentemente do código-fonte de outros objectos (desacoplamento). Além disso,
como não dependem de outros objectos, cada objecto pode ser utilizado livremente no
sistema. Por exemplo, você pode dar sua bicicleta a alguém e mesmo assim ela
funcionará. O objecto bicicleta deve ser independente dos objectos que a utilizam
(objectos ciclistas).
 Ocultação de informações: um objecto possui uma interface pública que outros objectos
podem utilizar para comunicarem-se com ele. Mas o objecto pode manter informações
privadas e métodos podem ser modificados em qualquer momento sem afectar os outros
objectos que dependem dele. Por exemplo, você não precisa de entender o funcionamento
interno do mecanismo de marchas da sua bicicleta para utilizá-lo.

5
2. Polimorfismo 

É a capacidade de um elemento ser capaz de assumir diferentes formas. Na orientação a objectos,


chamamos de polimorfismo a possibilidade que temos de mudar o comportamento de um mesmo
método de um objecto dentro da sua hierarquia, ou seja, é a propriedade de duas ou mais classes
derivadas de uma mesma super classe responderem a mesma mensagem, cada uma de uma forma
diferente.

Por exemplo, na imagem abaixo, temos uma hierarquia da classe Mamífero:

A classe Mamífero tem o método locomover˗se:

Super classe Mamífero: locomover˗se (A ser implementado em alguma subclasse).

As subclasses Macaco, Homem e Baleia herdam e subscrevem o método citado da seguinte


forma:

Subclasse Macaco: locomover˗se (pulando de galho em galho);

Subclasse Homem: locomover˗se (andando);

Subclasse Baleia: locomover˗se (nadando);

6
Os objectos de cada classe responderam à mesma mensagem (locomover˗se), mas cada um de
uma forma diferente. O que caracteriza o principal conceito do polimorfismo:

Tipos de polimorfismo

Existem 2 tipos de polimorfismo nomeadamente:

 Polimorfismo Ad-hoc
 Polimorfismo Universal

Polimorfismos Ad-hoc são números finitos de variações, que nelas possuem 2 grupos:

Sobrecarga (overloading) ˗ é resolvido estaticamente, em tempo de compilação e utiliza os


tipos para escolher a definição, ou seja, é suportado através da sobrecarga de métodos, ou seja,
consiste em utilizar o mesmo nome de um método com assinaturas diferentes. Permite que um
mesmo nome denote diversas funções, de acordo com o contexto. Constitui apenas uma
abreviação sintáctica (um pré-processamento pode atribuir nomes diferentes às diversas
funções).

Coerção ˗ utiliza a definição para escolher o tipo de conversão e é suportado através da


sobrecarga de operadores, ou seja, ocorre quando se converte um elemento de um tipo, no tipo
apropriado para o método. Permite que um argumento seja convertido para o tipo esperado por
uma função, evitando assim um erro de tipo. É uma operação semântica que reduz o tamanho do
código (um compilador determina as conversões de tipo necessárias e as insere
automaticamente).

Polimorfismos Universal são números infinitos de variações, que nelas possuem 2 grupos:

Polimorfismo Universal Paramétrico ˗ é uma forma de se tornar uma linguagem mais


expressiva e mantém toda sua tipagem estática segura, considerado o polimorfismo verdadeiro,
um mesmo objecto pode ser utilizado como parâmetro em diferentes contextos sem necessidade
de alterações. Uma função que exibe polimorfismo paramétrico (também chamada de função
genérica) permite que o tipo do seu argumento seja determinado por um parâmetro implícito ou
explícito, executando uma mesma operação, independente do tipo de argumento.

7
Polimorfismo Universal Subtipagem/Inclusão ˗ é o modelo de herança e subtipos, que permite
a um objecto pertencer a várias classes simultaneamente, criando uma hierarquia de herança.
Numa subclasse, um objecto pode ter um comportamento modificado com relação à classe
original. Assim só ocorre em linguagens que permitem subtipo e herança. Uma instância de uma
subclasse pode ser manipulada pelas mesmas funções que manipulam instâncias da super classe.

3. Herança

Em orientação a objectos, herança é quando uma classe (filha) herda todas as características
(atributos e métodos) de outra classe (pai). A herança está directamente relacionada ao
polimorfismo, pois através da herança podemos subscrever e estender funcionalidades do
sistema.

A Herança possibilita que as classes compartilhem seus atributos, métodos e outros membros da
classe entre si. Para a ligação entre as classes, a herança adopta um relacionamento
esquematizado hierarquicamente.

Na Herança temos dois tipos principais de classe:

Classe Base: é a classe que concede as características a uma outra classe.

8
Classe Derivada: é a classe que herda as características da classe base.

O fato de as classes derivadas herdarem atributos das classes bases assegura que programas
orientados a objectos cresçam de forma linear e não geometricamente em complexidade. Cada
nova classe derivada não possui interacções imprevisíveis em relação ao restante do código do
sistema.

Com o uso da herança, uma classe derivada geralmente é uma implementação específica de um
caso mais geral. A classe derivada deve apenas definir as características que a tornam única.

Por exemplo: uma classe base que serviria como um modelo genérico que pode ser ʺa classe
Pessoaʺ com os campos ʺNome e Idadeʺ. Já uma classe derivada poderia ser ʺFuncionárioʺ
com os campos ʺNome e Idadeʺ herdados da classe Pessoa, acrescido do campo Cargo.

De maneira natural, as pessoas visualizam o mundo sendo formado de objectos relacionados


entre si hierarquicamente.

Mais um exemplo: vamos analisar a relação entre animais, mamíferos e cachorros. Os animais,
sob uma descrição abstracta, apresentam atributos, tais como tamanho, inteligência e estrutura
óssea. Apresentam também aspectos comportamentais como mover-se, dormir, comer, respirar,
etc. Esses atributos e aspectos comportamentais definem a classe dos animais.

Analisando os mamíferos, que são filhos da classe animais, veremos atributos detalhados e
específicos a ele, como por exemplo, tipo de dente, pelos e glândulas mamárias.

Assim, podemos afirmar que os mamíferos são classificados como uma classe derivada dos
animais, que por sua vez, são uma classe base dos mamíferos.

Pela chamada hierárquica de classes, a classe derivada mamíferos recebe todos os atributos de
animais, partindo do princípio que uma classe derivada recebe por herança todos os atributos de
seus ancestrais.

9
10
Conclusão

Chegando a esse momento é importante deixar claro que o tema ʺfundamentos básicos de
programação orientada a objectoʺ permite melhorar a reusabilidade e extensibilidade dos
softwares.

Uma classe de objectos representa um conjunto de objectos que possuem características e


comportamentos comuns.

O mais importante no desenvolvimento do trabalho com o objectivo de fazer chegar ao ouvinte


ou seja ao receptor a ideia de que os fundamentos básicos de programação orienta a objecto vem
complementar o mundo sibernetico do modo a facilitar, proteger, desenvolver o uso do Software.

11
Bibliografia
Google.com
Www. Fundamentos de programação orientada a objectos.com

12

Você também pode gostar