• Nenhum resultado encontrado

UNIP UNIVERSIDADE PAULISTA INSTITUTO DE CIÊNCIAS EXATAS E TECNOLOGIA (ICET) CURSO DE CIÊNCIAS DA COMPUTAÇÃO. O Paradigma da Orientação a Objeto

N/A
N/A
Protected

Academic year: 2021

Share "UNIP UNIVERSIDADE PAULISTA INSTITUTO DE CIÊNCIAS EXATAS E TECNOLOGIA (ICET) CURSO DE CIÊNCIAS DA COMPUTAÇÃO. O Paradigma da Orientação a Objeto"

Copied!
24
0
0

Texto

(1)

UNIP – UNIVERSIDADE PAULISTA

INSTITUTO DE CIÊNCIAS EXATAS E TECNOLOGIA (ICET) CURSO DE CIÊNCIAS DA COMPUTAÇÃO

O Paradigma da Orientação a Objeto

Apresentada em Cumprimento Parcial dos

Requerimentos para o Curso de Ciências da Computação

Disciplina de Paradigmas de Programação, Professor Willian Zacarotto

Por

Alberto José Araujo 753384-5 Danilo Rodrigues Pereira 522306-7

(2)

SUMÁRIO

ABSTRAÇÃO ...3

VARIÁVEIS ESTÁTICAS X DINÂMICAS...4

FILA EM PASCAL / DELPHI...8

FILA EM OOP...10

PROGRAMAÇÃO MODULAR ...11

EMCAPSULAMENTO ...12

OCLUSÃO DE INFORMAÇÕES...12

PASSOS DE MONTAGEM DE UM PROGRAMA OOP. EM JAVA ...13

PROGRAMAÇÃO ORIENTADA A OBJETO ...14

HERANÇA ...16 POLIMORFISMO ...19 MÉTODO ...21 CLASSES E OBJETOS...22 MODELAGEM DE DADOS ...22 REUTILIZACAO ...23 BIBLIOGRAFIA ...24

(3)

ABSTRAÇÃO DE DADOS

1 – Conceito

É uma forma de resolver um problema sem preocupar-se com os detalhes, observando apenas os aspectos de interesse. Não levando em conta em qual tipo de computador será usado e nem a linguagem que será usada.

Exemplo:

Verificar se um determinado número é par ou impar.

Para resolver esse problema simples primeiramente devemos pensar quais as condições para que o numero seja par. Todo numero par é divisível por 2. Resolvido o problema depois é só fazer a implementação na linguagem desejada.

Implementação em Pascal

Function par (N: real): Boolean; Begin

if ( N mod 2 = 0 ) then par := true;

(4)

Outro exemplo:

Calcular a área de um triangulo.

Para resolver esse problemas, primeiramente devemos saber qual a formula para calcular a área de um triangulo ( A = (base * altura )/2). Depois disso é só passar essa formula para a linguagem desejada.

VARIÁVEIS ESTÁTICAS X DINÂMICAS

Até agora lidamos com variáveis que tiveram de ser criadas antes de se executar um programa. São variáveis que existem o tempo todo (em tempo de execução), ou seja, são variáveis estáticas. Portanto a alocação de memória para esse tipo de variável é feita antes da execução do programa (compilação). A desvantagem é que uma vez criada esse espaço de memória não pode ser alterado. As variáveis dinâmicas podem ser criadas e destruídas durante a execução do programas. Essa é a grande vantagem sobre as estáticas.

Ponteiro ou apontador (Pointer em pascal)

São variáveis que aponta para um determinado endereço de memória (E.G endereço de outras variáveis). Ou seja, ela aponta a um local da memória onde está armazenada uma variável.

Ex var P: ^integer;

Após esta declaração, teríamos criado uma variável do tipo Ponteiro que ocupa 4 bytes (lembre-se que ela aponta um endereço, e como sabemos, no IBM/PC, um endereço é formado pelo Segment e pelo offset, cada um com 2 bytes) e que irá apontar uma variável do tipo Integer. Utilizamos como exemplo o tipo Integer, mas poderia ser qualquer outro tipo e até mesmo Record.

(5)

Até esse instante, não criamos a tão famosa variável dinâmica, e sim uma variável do tipo Ponteiro, que irá apontar o endereço de uma variável dinâmica do tipo Integer.

E dado isto, perguntamos: para onde está apontando a variável recém-criada chamada p? Simplesmente para nenhum lugar. Isto recebe o nome em Pascal de NIL. Quando escrevemos no meio de um programa a declaração abaixo:

p := NIL;

Estamos querendo dizer que a variável do tipo Ponteiro, chamada p, não está apontando para nenhuma variável no momento. Sempre que criamos uma variável do tipo Ponteiro, ela tem o valor inicial NIL Passo 2: Criação de variáveis dinâmicas

O próximo passo é a criação de uma variável dinâmica, para tanto, utilizamos a procedure New. Sua sintaxe é:

New(p);

Isto faz com que seja alocado um espaço de memória, suficiente para armazenar uma variável do tipo associado a p, no caso Integer. Esse espaço de memória fica num local especial chamado HEAP. No caso do IBM/PC, o HEAP é toda a memória não utilizada pelo sistema.

Portanto, a declaração New(p) aloca um espaço de memória no HEAP, suficiente para armazenar uma variável do tipo Integer e retorna o endereço inicial desta região de memória para a variável p. Lembre-se que p é do tipo Ponteiro.

(6)

Exemplo usando variáveis dinâmicas.

Program Exemplo; Uses CRT;

{Este programa lê registros com a estrutura abaixo, até que se digite 'fim' quando é perguntado o nome da pessoa. Repare que o programa tem a capacidade de ler um número ilimitado de registros sem a preocupação de se definir um array e sua respectiva dimensão.} Nome : String[30]; Sexo : Char; Idade : Integer; Altura: Real; Type Pessoa = Record Nome : String[30]; Sexo : Char; Idade : Integer; Altura: Real; End; ponteiro = ^Pessoas; Pessoas = Record Valor : Pessoa; Prox : Ponteiro; End; Var p,prim : Ponteiro; Procedure Linha; Var i:integer; Begin

For i:=1 to 80 do write('-') End; Begin Prim:=nil; ClrScr; Repeat Linha; New(p);

(7)

Write('Nome da pessoa ---> '); Readln(p^.valor.Nome); If (p^.valor.Nome<>'fim') Then Begin Write('Sexo ---> '); Readln(p^.valor.Sexo); Write('Idade ---> '); Readln(p^.valor.Idade); Write('Altura ---> '); Readln(p^.valor.altura); p^.Prox:=Prim; Prim:=p; End; Until p^.valor.nome='fim'; ClrScr; Linha; p:=prim; While p<>nil do Begin With p^.valor do Writeln(nome:30,sexo:5,idade:5,altura:6:2); p:=p^.prox; End; End.

(8)

FILA EM PASCAL / DELPHI

Criaremos um programa para cadastrar 1000 funcionários de uma empresa. Usando os 2 tipos de variáveis. Estáticas:

Type

Funcionário = record Nome : string[30]; Salário : real; Setor : string[30]; Funcao : string[20]; end. Var

EMPRESA: ARRAY[1..1000] OF FUNCIONARIO ; Representação

1 2 3 ... 1000 Funcionario Funcionario Funcionario Funcionario

Dinâmicas :

Type Funcionário = record Nome : string[30]; Salário : real; Setor : string[30]; Funcao : string[20]; Prox : ^Funcionario; end. Var P :^Funcionario; procedure insere(x:Funcionario);

(9)

var elemento : Funcionario; begin if (p= nil) then p:=x else elemento:=p;

while (elemento.prox = nil) do begin elemento:= elemento.prox; end; elemento.prox:= x; end; Representação:

(10)

FILA EM OOP

A implementação desse objeto esta encapsulado, ou seja, não podendo ser acessado pelo usuário, mas isso não quer dizer que ele não exista. A interface é a integração direita entre o usuário e o objeto.

Exemplo: Um Aparelho de DVD. Para abrir o drive apertamos um botão (objeto do DVD), nesse mesmo instante estamos acionando um EVENTO DESSE BOTÃO chamado (ABRIR), que abrirá o drive. Mas aconteceram muitas coisas internamente para que isso acontecesse, que seria os ATRIBUTOS.

(11)

PROGRAMAÇÃO MODULAR

Em Pascal e Delphi podemos criar nossas próprias bibliotecas UNIT contendo procedures e funções. Exemplo: Unit DANILO; Implementation Crt; Interface

Procedure alterarsalario(var X : real); Begin {comandos} End; Procedure inserir; Begin {comandos} End; End. Program Fuincionario; Uses crt, DANILO; Begin Clrscr; {crt}

Writeln( ´Digite o seu salario´, salário); Novosalario:= alterarsalario;

(12)

PRINCIPAIS CARACTERÍSTICAS

• Encapsulamentos de dados e funções

• Restrições à visualização das variáveis, constantes e módulos; • Separação do “O QUE É FEITO” do “COMO É FEITO”.

ENCAPSULAMENTO

É agrupamentos de idéias em uma mesma unidade.

• Código (funções e procedimentos). • Dados (vetores e registros).

• Código + Dados (Classes e Objetos).

OCLUSÃO DE INFORMAÇÕES

• Restrições à visualização - BIBLIOTECAS

• Classes com interface, onde somente os atributos são públicos (public), isso

garante que as modificações em alguma subclasse não afetaram essa classe e sim somente os atributos públicos.

(13)
(14)

PROGRAMAÇÃO ORIENTADA A OBJETO INTRODUÇÃO

A Metodologia Orientada a Objetos teve sua grande expansão nos anos 90, quando se tornou a principal metodologia de desenvolvimento de software. Permite modelar de forma mais natural o mundo real, pois as estruturas de dados são vistas como objetos, ou seja, têm características e funções. Tem seu maior objetivo por aumentar a produtividade do desenvolvimento de software através de uma maior expansibilidade e reutilização de código, além de controlar a complexidade e o custo da manutenção do mesmo.

Quando utilizada, a fase de projeto do desenvolvimento do software está mais intimamente ligada à fase de implementação. Um dos pontos chaves desta metodologia é centralização das atenções nas Estruturas de Dados, ao contrário da metodologia estruturada, onde a atenção era centralizada nos procedimentos. Na orientação a objetos há uma maior aproximação entre dados e procedimentos, pois procedimentos são definidos em termos dos dados.

Definição: o termo orientação a objetos significa organizar o mundo real como uma coleção de objetos que incorporam estrutura de dados e um conjunto de operações que manipulam estes dados.

Todas as linguagens orientadas a objetos possuem três características básicas:

• Objetos • Polimorfismo • Herança

(15)

As linguagens de POO podem ser divididas em dois grupos:

Puras : projetadas especificamente para o paradigma de OO : Smalltalk, Eiffel e Java Híbridas : Extensões de linguagens tradicionais e suportam tanto o estilo tradicional quanto o OO : (C++, Objective-C, CLOS e dialetos OO de Pascal)

Componentes Básicos da Orientação a Objetos Classe →→→→ São moldes através dos quais criamos objetos

Objeto →→→→ Abstração que agrupa características e comportamentos.

Instância →→→→ É o objeto propriamente dito. Possui características próprias.

Propriedade →→→→ Define as características dos objetos de uma classe.

Método →→→→ Define o comportamento dos objetos de uma classe.

Mensagem →→→→ Representa uma ação do objeto ou uma mudança de estado. Define a

comunicação entre objetos.

Interface →→→→ Conjunto de mensagens que define o comportamento de um objeto

(16)

HERANÇA

Permite que uma nova classe seja descrita a partir de outra classe já existente (Reutilização).

A subclasse herda as características e o comportamento da superclasse.

A subclasse pode adicionar novas características e comportamentos aos herdados da superclasse.

A subclasse pode ter um comportamento diferente da superclasse, redefinindo o método herdado.

A subclasse é uma especialização da superclasse.

Toda instância da subclasse é também uma instância da superclasse. O resultado de uma seqüência de heranças é uma hierarquia de classes.

Exemplificando, sob o ponto de vista administrativo (no contexto de um banco, por exemplo) a noção de Pessoa geralmente é subdividida (subclassificada) em: Pessoa Física (um ente individual) e Pessoa Jurídica (uma empresa ou sociedade).

Uma possível descrição da estrutura (hierarquia de agregação /decomposição) de cada uma destas classes poderia ser:

(17)

Note que as três propriedades mais à esquerda (Nome, Endereço e Telefone) são comuns às duas classes. Como ambas as classes são subclasses da classe Pessoa, estas propriedades podem ser mais bem descritas diretamente na classe Pessoa, evitando, desta forma, a repetição observada acima.

O efeito final é o mesmo, ou seja, os objetos pertencentes às classes PessoaFísica e PessoaJurídica terão as seis propriedades que lhe são características (as três comuns, mais as três

(18)

particulares). Isto ocorre em função das classes PessoaFísica e PessoaJurídica serem especializações da classe Pessoa e, portanto, herdarem as suas propriedades.

A herança de propriedades também ações. Considere a hierarquia de especialização /generalização que se segue. Nela está expresso que Mamífero e Ave são subclasses (especializações) de Animal, e que Homem, Gato e Cão são subclasses de Mamífero.

Uma ação característica de todos os mamíferos é mamar. Portanto, descreve-se esta ação diretamente na classe Mamífero, de forma que, por herança, todas as subclasses passam a apresentar esta propriedade. Evita-se, assim, a necessidade de descrever esta ação em cada uma das subclasses de Mamífero. Similarmente, uma ação característica de todos os animais é olhar. Por herança, as subclasses imediatas de Animal (Ave, Mamífero, etc) passam a apresentar esta propriedade e, por transitividade, as subclasses destas classes também passam a fazê-lo.

O resultado deste mecanismo de herança de propriedades é que um objeto da classe Cão, por exemplo, inclue em seu comportamento peculiar as ações olhar e mamar, além de outras ações bem particulares que estarão descritas diretamente na classe Cão.

(19)

POLIMORFISMO

• É a capacidade de tratarmos objetos de diferentes tipos de uma mesma maneira desde que

eles tenham um ancestral em comum

• Objetos de classes diferentes podem ter métodos com mesmo nome e cada objeto

responderá adequadamente de acordo com seu método.

• Métodos da mesma classe podem ter o mesmo nome, desde que possuam quantidade ou

tipo de parâmetros diferentes.

• Métodos da classe derivada podem ter nomes iguais aos da classe base, inclusive com

parâmetros iguais. Em linguagem estruturada:

Abstração da figura em uma definição de tipo: registro variante ou estrutura com um campo que discrimina entre os diferentes tipos de figuras

PROCEDURE Display (umaFigura: Figura); BEGIN

CASE umaFigura.figuraTipo OF

Triangulo: MostrarTriangulo (umaFigura.Triangulo) Retangulo: MostrarRetangulo (umaFigura.Retangulo) Quadrado: MostrarQuadrado (umaFigura.Quadrado) Circulo: MostrarCirculo (umaFigura.Circulo) END

(20)

Em linguagem OO com ligação dinâmica:

Implementar um método para cada figura, mas o mesmo nome pode ser usado para cada uma delas.

Não é responsabilidade do usuário determinar o método correto a ser invocado. Vantagens:

• Sobrecarga de nomes • Mais adaptável à mudança

(21)

MÉTODO

Um grupo de instruções em uma classe, que define como os objetos da classe se comportarão. Os métodos são semelhantes a funções em outras linguagens, mas sempre precisam estar localizados dentro de uma classe.

Método de classe: Um método que opera em uma classe isoladamente, e não em instancia específicas de uma classe.

Método de instância: Um método de um objeto que opera sobre este objeto manipulando os valores de suas variáveis de instancia. Como os métodos de instância são muito mais comuns do que os métodos de classe, eles normalmente são chamados apenas de

(22)

CLASSES E OBJETOS

Uma classe é uma definição para um tipo de entidade da mesma maneira como uma entrada em um dicionário é uma descrição de um tipo de entidade, como um carro. Um objeto é uma abstração para uma única entidade, como seu carro. Uma classe define regras. Um objeto define fatos. Um objeto é instanciado (criado) de acordo com as regras definidas por sua classe.

É um tipo de dado, como os já conhecidos, para declarar variáveis. Uma variável de uma classe é chamada de Objeto.

Definir uma classe não cria um objeto, assim como um tipo de variável NÃO é uma variável.

Variáveis de Classe: São os dados declarados em uma classe

Instância: Temos uma instância de uma classe quando declaramos um objeto a partir de uma classe. É semelhante à declaração de uma variável.

MODELAGEM DE DADOS

Do desenho de sistemas de informação, a modelagem de dados consiste em desenhar o sistema de informações, concentrando-se nas entidades lógicas e nas dependências lógicas entre essas entidades.

Na fase inicial do desenvolvimento de um projeto de software, a ênfase será no desenho de um modelo conceitual. Este pode ser detalhado em um modelo lógico dos dados às vezes chamado de modelo de dados funcional. Em estágios posteriores, o modelo pode ser traduzido no modelo físico.

(23)

REUTILIZAÇÃO

A capacidade de se otimizar a produtividade do programador depende diretamente da maneira como o software disponibiliza a reutilização do código gerado. De fato, a maioria dos programadores profissionais, já reutiliza código anteriormente gerado, porém a perfeita reutilização consiste na utilização COMPLETA de um código gerado para algum sistema SEM qualquer outra adaptação prévia.

Quatro requerimentos de software reutilizável

Os fatores importantes em reutilização de software são plenamente conhecidos há muito tempo. Esses fatores são:

Documentação - deve haver informação adequada sobre o que cada componente de software reutilizável pode fazer.

Flexibilidade - um componente verdadeiramente reutilizável deve ser aplicável em mais de um contexto.

Visibilidade - para reutilizar software, os desenvolvedores devem poder encontrar os componentes a reutilizar (em um catálogo de componentes reutilizáveis, por exemplo).

Eficiência - um componente de reutilizável não será utilizado se não tiver a eficiência

(24)

BIOGRAFIA

CHAGAS JUNIOR, WALTER ALVES. O QUE É ORIENTAÇÃO À OBJETOS ?, Belo Horizonte, [s.n.], Jun. 2001. Disponível em:

<http://www.geocities.com/SiliconValley/Bay/1058/oop.html>. Acesso em: mar. 2005. Conceitos de Orientação a Objetos, [S.I.], [s.n.]. Disponível em:

<http://groups.msn.com/cafedotnet/conceitosdeorientaoaobjetos.msnw>. Acesso em: mar. 2005

DELPHI Orientação a Objetos + Object Pascal , [S.I.], [s.n.]. Disponível em: <http://www.firstsoft.com.br/curso/delphi_avancado1.htm >. Acesso em: mar. 2005. HARADA, ELAINE TEIXEIRA DE OLIVEIRA. Orientação a Objetos - Uma

Introdução à Programação Orientada a Objetos – DCC – ICE - UFAM, 2004, [S.I.], [s.n.]. Disponível em: <http://www.dcc.ufam.edu.br/~elaine/>. Acesso em: mar. 2005. LIMA, BRUNO R. Orientação a Objetos e Java Na Prática Minicurso : Entendendo orientação a objetos e aplicando-a na linguagem Java em um exemplo prático, São Paulo, Conexão Java, Ago. 2004. Disponível em:

<http://www.conexaojava.com.br/conexaojava04/download/minicursos/OO.e.Java.na.pra tica-Conexao.Java.2004.pdf>. Acesso em: mar. 2005.

Modelagem de dados, [S.I.], [s.n.]. Disponível em:

<http://pt.wikipedia.org/wiki/Modelagem_de_dados>. Acesso em: mar. 2005 Pequeno dicionário básico de orientação a objetos em Java, São Paulo, Linha de código, Ago. 2004. Disponível em:

<http://www.linhadecodigo.com.br/artigos.asp?id_ac=95> . Acesso em: mar. 2005. Programação Orientada a Objetos - LSC / INF / UFSC, Santa Catarina, [s.n.]. Disponível em <http://www.inf.ufsc.br/poo>. Acesso em: mar. 2005.

SEBESTA, ROBERT W. Conceitos de Linguagens de Programação / Robert W. Sebesta; trad. José Carlos Barbosa dos Santos. – 5. ed. – Porto Alegre: Bookman, 2003.

Referências

Documentos relacionados

- Identificar e/ou sintetizar genótipos de mamoneira que se adaptem às condições edafoclimáticas do Nordeste, visando a distribuição de cultivares mais produtivas, semi-deiscentes,

Por isso, o mesmo mostrou-se completamente disposto para realização das extrações dentárias superiores e instalação de implantes osseointegrados na maxila com prótese de arco

Embora esteja cada vez mais bem documentada a magnitude da dispersão no meio ambiente de poluentes tóxicos produzidos pelo homem, poucas pessoas sabem que esses mesmos compostos

z tenho conhecimento da existência e disponibilidade do plano Amil Referência, quarto coletivo, com abrangência Nacional, e que ele a mim foi oferecido, sendo minha a opção

pH (como solução aquosa) Sem dados disponíveis Não existe informação disponível Viscosidade cinemática Sem dados disponíveis Nenhum conhecido. Viscosidade Dinâmica

Por exemplo, o processo Gerência de Projetos apoia no planejamento do processo Desenvolvimento para Reutilização e do programa de reutilização; o processo Gerência

Para não efetivar as 30 horas, para impor o ponto eletrônico, para legalizar a relação privada entre a UFU e as Fundações Privadas, para legalizar os cursos de especialização

5º No cumprimento das finalidades referidas nesta Resolução, poderá a fundação de apoio contratada, por meio de instrumento legal próprio, utilizar-se de bens e serviços