• Nenhum resultado encontrado

AULA1 POO

N/A
N/A
Protected

Academic year: 2021

Share "AULA1 POO"

Copied!
52
0
0

Texto

(1)

POO-PROGRAMACAO

ORIENTADA A OBJETOS

Prof: Manfrine Tapiramutá

(2)

CONCEITOS DE LINGUAGENS DE

PROGRAMAÇÃO

Linguagem de programação  Conjunto de

comandos(escritos ou visuais) e regras usados para dar instruções ao computador.

 Comandos Escritos: Linguagens Textuais

 Basic, Cobol, Pascal,...

 Comandos Visuais: Linguagens Orientada a Eventos

 Delphi, Visual Basic,...

 Não confundir com Linguagem Orientada a Objetos

 Componentes visuais(botões,...) respondem a eventos(click do mouse,...)

Programa  Seqüência ordenada de comandos

(3)

OBJETO

 é uma entidade do mundo real que tem

uma identidade.

 Objetos podem representar entidades

concretas ou entidades conceituais.

 A estrutura de um objeto é representada em

termos de atributos.

 O comportamento de um objeto é

representado pelo conjunto

de operações que podem ser executadas sobre o objeto.

(4)

CONCEITO POO

 A POO foi criada para tentar aproximar o

mundo real do mundo virtual: a idéia fundamental é tentar simular o mundo real dentro do computador. Para isso, nada mais natural do que utilizar Objetos, afinal, nosso mundo é composto de objetos.

 A programação orientada a objetos tem como

principais objetivos reduzir a complexidade no desenvolvimento de software e aumentar sua produtividade.

 A programação orientada a objetos não tem a

intenção de substituir a programação estruturada tradicional

(5)

POO

  Podemos considerar que a programação OO

é uma evolução de práticas que são recomendadas na programação estruturada, mas não formalizadas, como o uso de variáveis locais e globais.

 A grande dificuldade para compreender a

programação OO é a diferença de abordagem do problema..

(6)

POO X PE

 Enquanto a programação estruturada tem como

principal foco as ações (procedimentos e funções), a programação OO se preocupa com os objetos e seus relacionamentos.

 Além do conceito de objeto, a programação OO

tem como alicerces os conceitos de:

 Mensagem  Classe  Abstração  Encapsulamento  Herança  Polimorfismo

(7)

POO X PE

Programação orientada a objetos Métodos Instancias e Variáveis Mensagens Classes Herança Polimorfismo Programação Estrutura Procedimentos e Funções Variáveis Chamada a procedimentos e funções

Tipos de dados definidos pelo usuario

(8)

---PROGRAMAÇÃO PROCEDURAL OU IMPERATIVA

 Estilo convencional de programação

Programas são decompostos em passos de

computação que realizam operações complexas

 Rotinas são utilizadas como módulos para definir

cada passo da computação

(9)

PROGRAMAÇÃO ORIENTADA A OBJETOS

 Ênfase na definição de classes e objetos

 Instâncias de classes são criadas de acordo com

a necessidade durante a execução de um programa

 Baseado na definição de hierarquias de classes e

seleção em tempo-real de unidades a executar

 Smalltalk, Eiffel, Java  C++, Ada

(10)

PROGRAMA ESCRITO EM UMA LING.

ESTRUTURADA

 Principal Característica: compartimentalização do código e dados.  Linguagens procedimentais

 Esconde das outras funções as tarefas

desempenhadas por uma função específica.

 Redução da complexidade  Reaproveitamento do código  Equipe de trabalho

 Grande avanço em relação às

linguagens não estruturadas, pois o programador possui maior controle do fluxo de execução. Função Principal Função Principal Função A Função A Função B Função B

(11)

EXEMPLO DE UM PROGRAMA

EM LINGUAGEM C

 Variáveis Locais  Reduz quantidade de variáveis globais  Visibilidade das variáveis # include <stdio.h> int soma( int a, int b); int res, n1, n2; main ( ) { scanf(“%d%d”,&n1,&n2); res = soma (n1, n2 ); printf(“A soma de %d e %d é: %d”,n1, n2, res); }

int soma (int a, int b ) {

return a +b; }

(12)

EVOLUÇÃO DAS LINGUAGENS

DE PROGRAMAÇÃO

 Lisp: Linguagem que segue o paradigma funcional. Composta por funções para processamento de listas. Aplicações de IA.  C/C++: C é um sub-conjunto de C++. C++ é orientado a

objeto, ainda que não totalmente ou com falhas.

FORTRAN LISP 195 7 195 8 196 0 196 9 197 0 198 0 198 5 199 5 COBOL C C+ JAVA + SMALLTALK ALAN KAY XEROX PASCA L

(13)

POR QUE USAR OO

 Um programa de computador sempre busca representar uma dada realidade (mundo real ou modelo abstrato: matemático)

 Traduzir o modelo real em modelo computacional é o grande problema. Esta tarefa só é realizada de forma eficiente com o uso de métodos rígidos de modelagem.

 A OO tenta simular objetos do mundo real em objetos computacionais, tornando a tarefa de modelagem e programação mais simples.

 A Orientação a Objetos busca modelar um ambiente utilizando-se dos próprios elementos presentes neste ambiente, ou seja, os objetos.

(14)

POR QUE USAR OO

 Vantagens

 Existem muitas ferramentas de apoio ao desenvolvimento de programas;

 Os programas têm uma estrutura altamente modular, o que permite um mais fácil controle e expansão dos mesmos. Por exemplo, basta alterar as características de um objeto "mãe" para que todos os objetos "filhos" (que herdaram propriedades) sejam também automaticamente alterados de forma correspondente;  A programação orientada a objeto se baseia

fortemente na própria forma de pensar humana, ao contrário da forma algorítmica e procedural da programação convencional.

(15)

POR QUE USAR OO

aumento de produtividade

reuso de código

redução das linhas de código

programadas

separação de responsabilidades

maior flexibilidade do sistema

facilidade na manutenção, dentre

(16)

POR QUE NÃO USAR OO

Desvantagens:

 grande necessidade de memória;

 grande complexidade de gerenciamento

interno das estruturas dos objetos, o que implica em velocidade de execução menor.

 difícil otimização de tempo de execução dos

programas. A otimização de programas freqüentemente requer uma violação das próprias regras de programação orientada a objeto.

(17)

CLASSES

 No mundo real freqüentemente percebemos vários objetos de

um mesmo tipo. Por exemplo: seu carro é um dos muitos carros existentes no mundo.

 Usando a terminologia OO, dizemos que um carro em particular

é uma instância da classe de objetos conhecida como carros.

 Os carros, em geral, possuem estado (cor, potência do motor,

combustível) e comportamento (ligar, acelerar, brecar, mudar marcha) em comum.

 O estado de cada carro é independente e pode ser diferente do

estado dos outros carros. Cada carro pode ter uma cor diferentes, por exemplo.

 Na Orientação a Objetos também é possível ter vários objetos

(18)

 Tirando vantagem dessa semelhança entre alguns

objetos, também é possível criar modelos para esses objetos. Esse modelo é chamado de

CLASSE. As classes são tipos que podem ser criados.

 Por definição: Uma classe é um modelo (protótipo)

que define as variáveis (estado) e os métodos (comportamento) comuns a todos os objetos do mesmo tipo.

(19)

POO

 É a descrição de um grupo de objetos com

propriedades similares (atributos), comportamento comum(operações) , relacionamentos com outros objetos e semânticas idênticas.

 Todo objeto é instância de uma classe.  Enquanto um objeto individual é uma

entidade concreta que executa algum papel no sistema, uma classe captura a estrutura e comportamento comum a todos os objetos que estão relacionados.

(20)

POO

 A definição da classe consiste na definição

dos atributos e operações dos objetos desta classe;

 Um atributo é uma característica de uma

classe.

 Atributos não apresentam comportamento,

eles definem a estrutura da classe;

 Operações caracterizam o comportamento

de um objeto, e são o único meio de acessar, manipular e modificar os atributos de um

(21)

POO

 Uma classe define a estrutura e o

comportamento de qualquer objeto da classe, atuando como um padrão para a construção de objetos.

(22)

INSTÂNCIA DE OBJETOS

 Em informática, devido a importação do

idioma inglês, instância é usada com o sentido de exemplar.

 No contexto da orientação ao objeto,

instância significa a concretização de uma classe.

 Em termos intuitivos, mas aproximados, uma

classe é vista como um "molde" que gera instâncias de um certo tipo, já objeto é algo que existe fisicamente moldado a partir

desse molde.

(23)

HERANÇA

 Mecanismo que permite definir uma nova

classe (subclasse) a partir de uma classe já existente (superclasse)

 Ao se estabelecer uma Especialização

(subclasse) de uma classe, a subclasse

herda todas as propriedades (métodos e atributos) da superclasse.

 A subclasse pode adicionar novos métodos, como também reescrever métodos herdados

 Habilidade de um objeto derivar seus atributos

(dados) e métodos (funcionalidade) automaticamente de outro objeto

(24)

GENERALIZAÇÃO E

ESPECIALIZAÇÃO

 É um conceito poderoso que define uma hierarquia de classes, possibilitando o compartilhamento de semelhanças entre estas classes enquanto suas diferenças são preservadas nas classes especializadas.

 Pode-se dizer que generalização e especialização são dois lados da mesma moeda.

 Utiliza-se o conceito de especialização quando se deriva uma determinada classe em uma nova classe mais específica ou especializada. A nova classe, denominada subclasse, herdará da classe original, denominada superclasse, os seus atributos e parte ou totalidade de suas operações, e a estes adicionará os atributos e operações que a especifica.

(25)

 Por outro lado, utiliza-se o conceito de

generalização sempre que parte-se de classes que possuem características comuns, condensa-se tais características em uma nova classe de nível mais alto, superclasse, e faz-se com que as primeiras herdem da nova classe os atributos e operações que lhes eram comuns.

 O relacionamento de herança é quem

materializa o conceito de

Generalização/Especialização.

 A Herança materializa o conceito OO do “é

(26)

GENERALIZAÇÃO/ESPECIALIZAÇÃO

Mamífero GENERALIZAÇÃO ESPECIALIZAÇÃO (herança) CATEGORIA CATEGORIA Baleia Atributossangue quentevertebradovivíparo AtributosHabitat: marTempo médio de vida: 200 anos

(27)

GENERALIZAÇÃO/ESPECIALIZAÇÃO

CATEGORIA

CATEGORIA

Relação É um

Pessoa

(28)

HERANÇA

SuperClasse Atributo 1 Atributo 2 Serviço 1 Serviço 2 Subclasse Atributo 1 Atributo 2 Serviço 1 Serviço 2 Subclasse Atributo 1 Atributo 2 Serviço 1 Serviço 2 Herança não afeta a Superclass e Proprieda des Podem ser redefinida s Serviço 1 Serviço 2 Novas Proprieda des Podem ser criadas Serviço 1 Serviço 2 Serviço 3

(29)

MENSAGENS

 Mensagens possibilitam a interação entre os

objetos.

 Requisição para a ativação de um método.  Uma mensagem contém:

nome do método;

argumentos do método.

 A resposta a uma mensagem é o resultado

(30)

 Um objeto por si só não significa muito em

um sistema. Para ter algum sentido e valor esses objetos precisam interagir e

comunicar-se entre si.

 Os objetos se comunicam por meio de

mensagens.

 Enviar uma mensagem significa executar um

(31)

MÉTODOS OU MENSAGENS II

 Objetos de software interagem e se comunicam uns com os outros através do envio de mensagem

 Quando um objeto A quer que o objeto B faça uma ação, o objeto A envia uma mensagem ao objeto B

“A pede para B fazer Ação” = “A pede para B executar Método X”

Objeto A Objeto B

(32)

MÉTODOS OU MENSAGENS III

 Três componentes compreendem uma mensagem:  o objeto para o qual a mensagem é enviada

 o nome do método a ser executado

 parâmetros necessários para execução do método

“A pede para B fazer Ação” = “Você pede para a Bicicleta

Passar_Marcha(marchaAnterior)”

pessoa Bicicleta

(33)

VISIBILIDADE DE MÉTODOS E

ATRIBUTOS

 Private -> Os itens declarados nesse nível só

podem ser acessados na mesma classe.

 Public -> Nesse nível, qualquer classe poderá

acessar o item.

 Protected -> Os itens só poderão ser

acessados em outra classe se for em uma classe descendente.

 Published -> É o nível default, igual ao

Public, mas define propriedades e eventos usados em tempo de projeto.

(34)

VISIBILIDADE DE ATRIBUTOS

E MÉTODOS

 O escopo ou visibilidade é utilizado para

definir o tipo de acesso que terá determinado método, atributo, classe ou objeto uma parte ficará totalmente escondida e restrita, e a

outra servirá apenas ao pacote de classes que a classe que o definiu pertence, e a última parte tem seu acesso totalmente liberado para qualquer classe.

(35)

ATRIBUTOS E MÉTODOS PÚBLICOS

(+)

 São os atributos e métodos dos objetos que

podem ser visíveis externamente, ou seja,

outros objetos poderão acessar os atributos e métodos destes objetos sem restrições.

Qualquer classe, de qualquer pacote, tem acesso a eles.

(36)

ATRIBUTOS E MÉTODOS PRIVADOS

(-)

 São os atributos e métodos que só podem

ser acessados por operações internas aos próprios objetos

(37)

ATRIBUTOS E MÉTODOS

PROTEGIDOS (#)

 São similares à classificação do

privado,porém, ao contrário dele, a

acessibilidade é transmitida às subclasses por herança (espécie de relacionamento entre classes).

(38)

ABSTRAÇÃO

Abstração consiste de focalizar nos aspectos

essenciais inerentes a uma entidade e ignorar propriedades “acidentais”.

  Em termos de desenvolvimento de sistemas, isto

significa concentrar-se no que um objeto é e faz antes de se decidir como ele será implementado.

 O uso de abstração preserva a liberdade para

tomar decisões de desenvolvimento ou de

implementação apenas quando há um melhor entendimento do problema a ser resolvido

(39)

ABSTRAÇÃO

 Muitas linguagens de programação modernas

suportam o conceito de abstração de dados; porém, o uso de abstração juntamente com polimorfismo e herança, como suportado em orientação a objetos, é um mecanismo muito mais poderoso.

 O uso apropriado de abstração permite que

um mesmo modelo conceitual (orientação a objetos) seja utilizado para todas as fases de desenvolvimento de um sistema, desde sua análise até sua documentação.

(40)

ESPAÇO DE PROBLEMAS ESPAÇO DE SOLUÇÕES Mundo Real Mundo Computacional Mapeamen to Processo de Identificação de Abstrações

Se essas abstrações não tiverem uma expressão direta (ou próxima)

do mundo computacional, a complexidade da solução será aumentada

(41)

ABSTRAÇÃO

 Abstração o processo através qual detalhes são ignorados, para nos concentrarmos nas características essenciais

 Concentra-se no que o objeto é e faz e não em como será implementado

 Permite representar uma realidade complexaem termos de um modelo simplificado

Mecanismo utilizado na análise de um domínio.

Através dela, o indivíduo observa a realidade e dela

abstrai

entidades, ações, etc. consideradas essenciais para uma

aplicação, excluindo todos os aspectos julgados irrelevantes

(42)
(43)

IMPORTÂNCIA DA ABSTRAÇÃO

 O conceito de abstração é importante para a análise de sistemas, pois só iremos representar nos sistemas que vamos criar, aquelas características que nos interessam dos objetos reais

 Exemplo:

 – Ao modelarmos um objeto avião no contexto de um sistema de marcação de passagens aéreas, não vai nos interessar a característica número de turbinas do avião, mas irá nos interessar a

(44)

CLASSES ABSTRATAS

Conceito

 Geralmente quando criamos uma classe o

fazemos para um determinado propósito e não pensamos previamente que a classe poderá ser herdada por outra classe. Agir desta forma é

seguir o caminho natural das coisas: criamos uma classe e a usamos e pronto.

 Ocorre que existem ocasiões nas quais criamos

uma classe que devemos usar mas já

percebemos que no futuro outras classes

poderão herdar da classe que estamos criando. Neste caso já temos a herança em mente.

(45)

ENCAPSULAMENTO

 Definição:

– Mecanismo que coloca juntos o código (métodos) e

os dados (atributos), mantendoos controlados em

relação ao seu nível de acesso.

– O conceito de encapsulamento está intimamente

ligado ao conceito de ocultamento da informação

(46)

ENCAPSULAMENTO

Objetivo:

– Controlar o acesso de atributos e métodos de um objeto, através de uma interface bem

definida. Benefícios:

– Manutenção de software; – Evolução de software;

(47)

ENCAPSULAMENTO

 Exemplo:

– Motor de um automóvel.

– O motorista não precisa ter conhecimento técnico de como funciona cada parte do motor, mas apenas saber qual é a sua finalidade e como usá-lo.

(48)

VANTAGENS

 Proteger os atributos do objeto quanto à

manipulação por outros objetos (proteção contra acesso não autorizado,valores

inconsistentes, entre outras possibilidades).

 Esconder a estrutura interna do objeto de

modo que a interação com este objeto seja relativamente simples e, à medida do

possível, siga um padrão de desenvolvimento que facilite o entendimento dos

(49)

TIPOS DE VISIBILIDADE

 PUBLIC - para definir acesso a métodos públicos  Que fazem parte da interface ao objeto para quem vai

chamá-lo

 Não usa para atributos

 PRIVATE - para acesso estritamente privado ao

objeto (na realidade à classe)

 PROTECTED para definir acesso a métodos ou

atributos que devem ficar disponíveis para quem estende a classe (acessível a subclasses)

C o p y le ft2 0 1 0 – P ro f: R ilm a r G o m e s< ril m a rg o m e s@ h o tm a il. co m >

(50)

INTERFACES

 É uma fronteira que define a comunicação

entre duas entidades

 “Liga” duas entidades diferentes sem uma

conhecer os detalhes da outra

 Um “plug” de ligação entre duas entidades

 Em Java serve como uma maneira de simular

herança múltipla :

 Uma classe pode implementar mais de uma interface

 Apenas um “contrato” do comportamento

esperado

 Classes implementam interfaces utilizando a

palavra chave implements

C o p y le ft2 0 1 0 – P ro f: R ilm a r G o m e s< ril m a rg o m e s@ h o tm a il. co m >

(51)

EXEMPLO DE UM INTERFACE

 A interface abaixo define o comportamento

de um player

public interface Player { public void play();

public void stop(); public void pause(); } C o p y le ft2 0 1 0 – P ro f: R ilm a r G o m e s< ril m a rg o m e s@ h o tm a il. co m >

(52)

public class HomeTheater implements Player {

public void play() {

System.out.println("Este é o método PLAY do home theater");

}

public void stop() {

System.out.println("Este é o método STOP do home theater");

}

public void pause() {

System.out.println("Este é o método PAUSE do home theater"); } } C o p y le ft2 0 1 0 – P ro f: R ilm a r G o m e s< ril m a rg o m e s@ h o tm a il. co m >

Referências

Documentos relacionados

Apenas foram submetidos aos protocolos de provocação e/ou dessensibilização com AAS, os pacientes com asma controlada e, portanto, os pacientes que tinham asma grave não

boa voz de palco, Diversas dinâmicas teatrais para a sala de aula; Trabalhar a música e a poesia como teatro; Através da dança praticamos teatro; Fantoches;

Com base nos resultados da pesquisa pode-se concluir que as pontas XR 11002 de aço inoxidável se mostraram 100% dentro dos padrões recomendados pela norma e todas as

Nesta dimensão, as percepções dos dois polos são similares, como pode-se observar na tabela 7, diferem um pouco no grau de importância atribuído para cada variável, mas

Machos Duroc são mais pesados ao nascer do que machos Pietrain e do que fêmeas das duas raças, e apresentam maior taxa de crescimento diário devido ao seu

Neste trabalho estudamos as defini¸ c˜ oes, teoremas e exemplos sobre existˆ encia e unicidade de solu¸ c˜ oes, adimensionalisa¸ c˜ ao da equa¸ c˜ ao, princ´ıpio de

A Direção-Geral do Campus Ariquemes, por meio da Coordenação de Assistência ao Educando, e considerando a Resolução nº 33/CONSUP/IFRO, de 23 de setembro de