Desenvolvimento de Aplicações Desktopfiles.professor-charles-ete.webnode.com/200000409... ·...

Post on 25-Aug-2020

1 views 0 download

Transcript of Desenvolvimento de Aplicações Desktopfiles.professor-charles-ete.webnode.com/200000409... ·...

Desenvolvimento de

Aplicações Desktop

Conceitos Básicos de POO

Professor: Charles Leite

Motivação

• Na Programação OO, um OBJETO éconsiderado a entidade central de umprograma

• Assim, o desenvolvimento de software naOO consiste em definir objetos queinteragem entre si, com um propósitoespecífico

2

Motivação

3

E qual a vantagem de tudo isso?

Motivação

• O mundo (a realidade) é formado por objetos

• Assim, a programação OO pode ser usada para representar de forma eficiente as entidades do mundo real– Podemos criar um objeto, por exemplo, para representar

um funcionário de uma empresa– Assim, poderíamos criar um objeto por funcionário, com

características e comportamentos para representá-lo

• Com isso, a programação OO permite mapear nossos programas a situações reais que eles representam

4

Motivação

5

A Programação OO torna mais fácil

resolver problemas reais

Princípios da OO

• A programação OO requer um conhecimento sólido dos seguintes conceitos:– Objeto– Atributo– Método– Classe– Encapsulamento– Herança– Polimorfismo

• Além desses, existem outros que permitem adaptar nossas soluções de diversas formas

6

Objetos

• Um OBJETO constitui um elemento fundamental de um programa– Representa um entidade real no domínio do

problema• Por exemplo, uma conta bancária para um sistema bancário

• Podemos considerar que na OO tudo são objetos– Os sistemas são objetos– Os “dados” manipulados e comunicados entre os

sistemas são objetos– Cada parte de um sistema (sub-sistema) é um objeto– Os dispositivos eletrônicos são objetos– A interface com o usuário é um objeto, composto por

vários outros objetos

7

Objetos

• Todo objeto é definido por um ESTADO e por um conjunto de COMPORTAMENTOS

– O ESTADO representa as características ou propriedades de um objeto• Por exemplo, o estado de um objeto que representa uma

conta bancária pode ser o seu número e seu saldo

– Os COMPORTAMENTOS são as atividades que um objeto pode realizar, ou seja, suas operações• O comportamento pode examinar ou alterar o estado de um

objeto• Por exemplo, as atividades (operações) de sacar dinheiro e

de fazer depósitos poderiam estar associadas a uma conta bancária

8

Objetos

• Um objeto que representa um Blu Ray

9

O estado atual do Blu Ray; o que ele

está fazendo ...As operações que o

Blu Ray pode executar

Objetos

• Um objeto que representa uma CONTA BANCÁRIA

10

Objetos

• Estados do objeto CONTA BANCÁRIA

– O COMPORTAMENTO, nesse caso, alterou o ESTADO do objeto

11

Atributos

• São valores que um objeto armazena internamente, podendo ser representados por dados primitivos ou por outros objetos

– Por exemplo:

• Um objeto que representa uma conta bancária pode armazenar um número real para representar seu saldo

• Ele ainda pode conter outros atributos, como o nome do seu proprietário

• Os valores de todos os atributos de um objeto definem o seu estado

12

Métodos

• Um MÉTODO consiste num grupo de declarações, identificado por um nome

• Quando um método de um objeto é chamado, dentro de um programa, suas declarações são executadas

• Um objeto possui um conjunto de métodos associado– Esses métodos definem, exatamente, os comportamentos

do objeto

• Por exemplo:– O comportamento “fazer um depósito” de um objeto

conta bancária é definido por um método que contém declarações que atualizarão o saldo dessa conta

13

Métodos

• Existe uma relação direta entre os atributos de um objeto e seus métodos

14

Classes

• Um objeto é definido a partir de uma CLASSE• Uma CLASSE representa um agrupamento de

objetos que possuem propriedades comuns e que podem realizar as mesmas operações– É uma definição que descreve como objetos

pertencentes à ela são estruturados internamente –quais propriedades e operações que o objeto possui

• CLASSE é um conceito, enquanto OBJETO é uma instância desse conceito

• Uma CLASSE serve como um modelo para criação de objetos– Portanto, podemos ter vários objetos pertencentes à

mesma classe

15

Classes

• Por exemplo:

– Uma planta criada por um arquiteto, para projetar uma casa, define diversas características (paredes, janelas, portas, tomadas, etc.)

– Uma vez que a planta é criada, diversas casas podem ser construídas, seguindo esse modelo

– Nesse sentido, casas construídas seguindo esse modelo são diferentes

• Elas possuem características diferentes (localizações, endereços, móveis, habitadas por pessoas diferentes, etc.)

16

Classes

17

Classes

• Uma vez que uma classe é definida, múltiplos objetos podem ser criados

– Por exemplo, podemos definir uma classe para representar o conceito de uma conta bancária e criar múltiplas objetos que representam contas bancárias específicas e individuais

– Cada conta bancária manteria, por exemplo, seu próprio saldo

18

Classes

• Múltiplos objetos podem ser criados a partir da mesma classe

19

Encapsulamento

• Um objeto deve ser ENCAPSULADO, o que significa que ele protege e gerencia suas próprias informações

• Ou seja, um objeto deve ser auto-gerenciável– Mudanças no seu estado só podem ser

realizadas pelos seus próprios métodos

– Nenhum outro objeto pode alterar o seu estado

20

Encapsulamento

• Um objeto pode, então, ser visto como uma “caixa preta”, onde os detalhes internos são escondidos dos clientes

• Clientes acessam o estado do objeto, através dos métodos oferecidos

21

Herança

• Classes podem ser criadas a partir da definição de outras classes existentes, através do conceito de HERANÇA

• O conceito de HERANÇA é uma forma de REUSO DE SOFTWARE que captura as diversas similaridades entre os diversos tipos de classes que podemos e queremos criar– Uma classe pode ser usada para derivar diversas

novas classes– Classes derivadas podem então ser usadas para

derivar ainda mais classes

22

Herança

• Assim, através da HERANÇA, podemos criar uma hierarquia de classes, onde os atributos e métodos definidos em uma classe são HERDADOS pelos seus filhos que, por sua vez, podem também ser passados para seus filhos e assim por diante

• Por exemplo:– Podemos criar uma hierarquia de classes que

representa diversos tipos de contas bancárias

– Características comuns são definidas em classes de nível mais alto e diferenças específicas são definidas em classes derivadas

23

Herança

24

Animal

Réptil

Cobra Lagarto

Pássaro

Papagaio

Mamífero

Cavalo Morcego

Herança

• Objeto do tipo Banco tem vários objetos do tipo Conta

– Conta é sub-classe de Banco, ou seja, Conta herda de Banco

25

Herança• Por sua vez, a classe Poupança é uma

versão especializada da classe Conta

– Métodos e atributos são herdados

26

Polimorfismo

• POLIMORFISMO é um conceito baseado na idéia de que podemos referenciar múltiplos objetos relacionados, através do conceito de HERANÇA, de múltiplas formas

• Assim, o polimorfismo permite que referências de tipos de classes mais abstratas representem o comportamento das classes concretas que referenciam– Um mesmo método pode ser definido de várias

formas, dependendo do seu contexto

• Isso nos dá a possibilidade de projetar soluções poderosas e eficientes para problemas que lidam com múltiplos objetos

27

Princípios da OO

• Em síntese:

28

Todos esses conceitos devem ser MUITO BEM compreendidos para

a criação de implementações eficientes, dentro do paradigma

OO

Criando Programas para Resolver Problemas

• Em geral, a resolução de problemas consiste nas seguintes etapas:1. Compreendendo o problema2. Projetando a solução3. Considerando alternativas para a solução e

refinando a solução4. Implementando a solução5. Testando a solução e resolvendo quaisquer

problemas que ocorram

• Essas atividades, não necessariamente, são lineares– Normalmente, elas se sobrepõem

29

Criando Programas para Resolver Problemas

1. Compreendendo o problema

– Embora óbvio, a falta de atenção nessa etapa leva o software ao fracasso

– Cada problema possui um domínio específico• As peculiaridades do mundo real que são a chave para

a solução do problema• Assim, para desenvolver uma boa solução, deve-se

entender completamente o domínio do problema

– Exemplo:• Um programa para calcular a pontuação de um jogo de

boliche• O domínio do problema são as regras do jogo

30

Criando Programas para Resolver Problemas

2. Projetando a solução– O segredo para projetar bem uma solução é quebrá-la

em parte, ou seja, “dividir para conquistar”– Raramente, uma solução pode ser desenvolvida

através de uma única tarefa– A solução deve consistir de uma série de tarefas

pequenas que interagem, na execução de uma tarefa maior

– No desenvolvimento de software, não devemos escrever um grande programa• Devemos projetar partes separadas que são responsáveis por

certas partes da solução• Em seguida, integrar essas partes com outras, constituindo a

solução final

31

Criando Programas para Resolver Problemas

3. Considerando alternativas para a solução e refinando a solução

– Nem sempre, nossa primeira solução para um problema é a melhor

– Precisamos, então, considerar alternativas e refinar a solução quando necessário

– Quanto mais cedo consideramos essas alternativas, mas fácil fica a modificação da nossa abordagem no desenvolvimento da solução

32

Criando Programas para Resolver Problemas

4. Implementando a solução– Consiste, exatamente, em considerar o projeto do

software e a alternativa encontrada, e codificá-la (escrever o programa)

5. Testando a solução e resolvendo quaisquer problemas que ocorram

– Em diversos momentos do processo de desenvolvimento, devemos testar nossa solução para encontrar erros e resolvê-los

– O teste não elimina todos os tipos de problemas• Porém, aumenta a confiança da nossa solução

33

Usando a OO para Desenvolver Programas

34

O conceito de Orientação a Objetos é independente

da linguagem de programação

Usando a OO para Desenvolver Programas

35

Usando a OO para Desenvolver Programas

36

• Portanto, um programa (módulo) acessa serviços fornecidos por outro programa (módulo) através da API (Application Program Interface) desse último

– O programador inclui chamadas aos serviços da API dentro do código do programa

• O que importa é a interface da API, ou seja, quais são os serviços oferecidos e como podemos utilizá-los

Usando a OO para Desenvolver Programas

37

O conceito de API está presente em qualquer

ambiente de programação e é

independente da OO

Usando a OO para Desenvolver Programas

• As API, por sua vez, são organizadas (estruturadas) em pacotes

• Pacote é uma entidade que agrupa classes logicamente relacionadas

– Funciona como uma espécie de biblioteca

– Evita conflitos de nomes de classes

38

Usando a OO para Desenvolver Programas

• Neste curso, usaremos a API padrão do JDK

• Ela cobre todas as bibliotecas de classes da plataforma Java, usadas para construir programas

• Ela é bastante extensa, o que a torna complexa de entendimento para programadores iniciantes

39

Usando a OO para Desenvolver Programas

• A API do JDK:

40

DÚVIDAS ...