desenvolvimento de aplicações desktopfiles.professor-charles-ete.webnode.com/200000409... ·...
TRANSCRIPT
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
DÚVIDAS ...