• Nenhum resultado encontrado

Programação Orientada a Objetos e a Linguagem Java

N/A
N/A
Protected

Academic year: 2022

Share "Programação Orientada a Objetos e a Linguagem Java"

Copied!
35
0
0

Texto

(1)

Programação Orientada a Objetos e a Linguagem Java

Rodrigo da Cruz Fujioka [email protected]

Ling de Programação II

(2)

Objetivos Objetivos

• Conceitos de programação orientada a objetos existentes na sintaxe da linguagem Java

– Características OO

em Java: abstração,herança, encapsulamento, polimorfismo, etc...

encapsulamento, polimorfismo, etc...

(3)

Motivação

Java é uma linguagem OO

Para desenvolver aplicações de qualidade em Java é preciso aprender a aplicar princípios de OO ao programar

É (quase) possível escrever programas em Java sem saber OO, mas:

Dificilmente você será capaz de ir além de programinhas simples com Dificilmente você será capaz de ir além de programinhas simples com

mais de uma classe

Será muito difícil entender outros códigos

Seu código será difícil de entender, manter e reutilizar

Você estará perdendo ao utilizar uma linguagem como Java (poderá usar outra mais simples para escrever de forma procedural)

Em síntese, 60% de Java se resume as teorias de OO.

(4)

Evolução da Programação Imperativa

• Primeira Geração (1954-1958)

Aplicações científicas e militares Expressões e funções matemáticas Fortran I, Algol58, FlowMatic

Códigos monolíticos

4

Códigos monolíticos

Dados

Procedimentos

(5)

Evolução da Programação Imperativa

• Segunda Geração (1959-1961) Primeiras estruturas de blocos

Conceito de subrotinas (primeiras abstrações algorítmicas)

Cobol, Lisp, Fortran II

5

Cobol, Lisp, Fortran II

Dados

Procedimentos

(6)

Evolução da Programação Imperativa

• Terceira Geração (1962-1970)

Modularização dos sistemas (abstrações maiores)

Mas... ainda continuávamos a “meter a mão nos dados”

Módulos

6 Dados

Procedimentos

(7)

Programação Imperativa

• Características

– Ênfase muito grande dada aos procedimentos e funções

Modela-se a solução de um problema tomando-se como base as funções a serem executadas.

– Dados são tratados de forma secundária

7

– Dados são tratados de forma secundária

Variáveis globais são criadas com o objetivo de atender a todos os módulos

Estes dados estão acessíveis e podem ser corrompidos

– Paradoxo

Dados são importantes!

Sem os dados os procedimentos não teriam utilidade prática

(8)

Programação Orientada a Objetos

• Características

– A ênfase aqui é dada às estruturas de dados, adicionando-se funcionalidades a elas

– Modela-se um sistema decidindo os objetos necessários

8

necessários

Estes, então, são caracterizados através de propriedades (que informações cada objeto deve armazenar?) e

comportamento (que tarefas cada objeto deverá desempenhar?)

– O programador vê seu sistema como uma coleção de objetos cooperantes, que se comunicam entre si

através do envio e recebimento de mensagens

(9)

Paradigma Orientado a Objetos

• Características

Implementa-se um sistema com base no conceito de objetos.

Estes são caracterizados através

Atributos

(informações que cada objeto deve armazenar)

Comportamento

(tarefas que cada objeto deverá desempenhar).

(10)

Paradigma Orientado a Objetos

• Características

Atributos (dados) e operações (comportamento) são igualmente enfatizados, o que não ocorre no paradigma imperativo.

Os dados de um objeto são acessados apenas

Os dados de um objeto são acessados apenas

pelas operações do objeto.

Os objetos representam coisas do mundo real:

papéis, animais, coisas, aparelhos, documentos e

etc...

(11)

Paradigma Orientado a Objetos

Um objeto armazena dados e implementa um conjunto de operações.

Modificações internas não alteram os outros objetos (interfaces bem definidas)

objetos (interfaces bem definidas)

(12)

Paradigma Orientado a Objetos

• A construção de um Software OO envolve um processo de mapeamento de entidades no

espaço de problemas para objetos no espaço de soluções, de tal maneira que as espaço de soluções, de tal maneira que as

operações definidas para esses objetos

correspondam a operações do mundo real.

(13)

Paradigma Orientado a Objetos

(14)

Paradigma Imperativo versus

Paradigma OO

(15)

Paradigma Imperativo versus Paradigma OO

(16)

Benefícios do Paradigma OO

• O comportamento do objeto é independente da representação interna dos dados

• Dados são protegidos contra acesso indevido

• Extensibilidade, mudança de representação e adição de nova funcionalidade pode ser feita de maneira incremental e com mínimo

distúrbio no sistema como um todo

(17)

Benefícios do Paradigma OO

• Diminuição da distância semântica entre o software e o domínio do problema

• Sistemas são “montagens” de código previamente testado

Menos erros e menor custo de manutenção Menos erros e menor custo de manutenção

• Desenvolvimento mais rápido

Construção a partir de objetos padrões

Reuso através de herança e modelos Corporativos Prototipagem rápida

(18)

Programação Orientada a Objetos

• O mundo é composto por Objetos.

(19)

Programação Orientada a Objetos

• O que é um Objeto?

– “Alguma coisa que faz sentido no domínio da aplicação”

– Uma abstração

• Utilidade:

• Utilidade:

Facilita a compreensão

– Oferece base real para implementação no computador

(20)

Programação Orientada a Objetos

• Descrição de um Objeto

– Um objeto pode ser descrito por um conjunto de atributos e comportamentos

Atributos

Motor Cor Potência

Rodas Velocidade

Comportamentos

Avançar Retroceder

Parar Abastecer

(21)

Programação Orientada

a Objetos

(22)

Programação Orientada a Objetos

• Tudo (em uma aplicação OO) é objeto.

• O comportamento de um objeto é representado através de seus métodos.

• Quando um método é invocado (chamado), dizemos

• Quando um método é invocado (chamado), dizemos que houve o envio de uma mensagem para o objeto que possui esse método.

• Ao receber uma mensagem o objeto executa o método correspondente e retorna um valor.

(23)

Programação Orientada a Objetos

• Quando executado, um método altera o estado (atributos) do objeto.

• Um objeto pode ser composto de outros objetos.

• Um programa corresponde a um conjunto de objetos enviando mensagens uns aos outros, para juntos

enviando mensagens uns aos outros, para juntos atingirem um comportamento de mais alto nível.

– Ex: Avião (motor e asa não voam)

• Todo objeto possui um tipo.

• Todos os objetos de um tipo particular podem receber as mesmas mensagens.

(24)

Programação Orientada a Objetos

• Dados não estão disponíveis globalmente, mas encapsulados em um objeto, que sabe tratá-los

através de seus métodos, e tem alguma relação com

eles (coesão).

(25)

Programação Orientada a Objetos

• Conclusões

– Na OO, os dados não estão disponíveis globalmente, mas modularizados e confinados (encapsulados) sob a parte do sistema (funções) que sabe tratá-los e tem alguma relação com eles (coesão)

25

alguma relação com eles (coesão)

– Entretanto, na programação imperativa, todas as

funções estão no mesmo nível hierárquico e podem, potencialmente, acessar qualquer dado da aplicação

A manutenção tanto corretiva quanto expansiva são muito difíceis de serem realizadas

(26)

Programação Orientada a Objetos

• Conclusões

– Uma classe em Java permite que vários objetos

daquela classe possam ser criados e passem a existir independentemente uns dos outros

– O polimorfismo e a herança permitem que o

26

– O polimorfismo e a herança permitem que o

processamento comum a tipos equivalentes seja realizado de uma vez só

Isso evita a criação de diversas funções com assinaturas diferentes, mas que, semanticamente, são muito

semelhantes.

(27)

Conceitos e Terminologias

Abstração

Objetos

Encapsulamento/Ocultação de informação

Estado e comportamento

Classes

Classes

Herança

Polimorfismo

(28)

Abstração

• Eliminação do irrelevante e amplificação do essencial

(29)

Abstração

• Através da abstração:

– O indivíduo observa a realidade e se concentra nos aspectos considerados essenciais para uma aplicação, excluindo todos os outros julgados irrelevantes.

excluindo todos os outros julgados irrelevantes.

• Um sistema bancário abstrai a entidade real cliente, onde apenas alguns dados relevantes são considerados (nome, cpf, endereço, salário, etc).

• Não é necessário armazenar todos os dados do cliente (o tamanho do pé, se é careca, a cor do cabelo, etc).

(30)

Abstração

• Através da abstração:

– O indivíduo observa a realidade e se concentra nos aspectos considerados essenciais para uma aplicação, excluindo todos os outros julgados irrelevantes.

excluindo todos os outros julgados irrelevantes.

• Um sistema bancário abstrai a entidade real cliente, onde apenas alguns dados relevantes são considerados (nome, cpf, endereço, salário, etc).

• Não é necessário armazenar todos os dados do cliente (o tamanho do pé, se é careca, a cor do cabelo, etc).

(31)

Abstração

• Através da abstração:

• Abstração de operações

– As responsabilidades de um objeto são divididas em métodos (operações).

– Para usar uma função escrita por terceiros, abstraímos – Para usar uma função escrita por terceiros, abstraímos

a sua implementação e nos concentramos na sua interface

(32)

Abstração

• Através da abstração:

• Abstração de dados

Serve para representarmos entidades reais numa linguagem de computador, identificando as

propriedades destas entidades que realmente propriedades destas entidades que realmente interessam no sistema

(33)

Próxima Aula

Dúvidas?

(34)

Próxima Aula

Sintaxe Java para construção de estruturas de dados

Componentes de uma classe e sua divisão interna

Mostrar um exemplo para levantar as vantagens da programação OO

(35)

Exercício - Pare Pense

Crie uma abstração de dados e de procedimentos para a cadeira em que você está sentado agora

Crie uma abstração de dados e de procedimentos para o seu colega do lado

Criar uma abstração de dados e de comportamento para o seu celular.

seu celular.

Criar uma abstração de dados e de comportamento para um aluno.

Criar uma abstração para uma televisão.

Referências

Documentos relacionados

Na imagem abai- xo, por exemplo, as dimensões e o posicionamento dos personagens (Tio Sam e Cardoso) traduzem, em linguagem simples, o desnível geopolítico existente entre Brasil

Este trabalho objetivou com auxílio da fotointerpretação e da análise multivariada analisar os parâmetros dimensionais da rede de drenagem através de 12 microbacias de 3 a ordem

Em termos de volumes, o crédito concedido às empresas desceu cerca de 6,3% face ao período homólogo e o crédito concedido aos particulares diminui cerca de 4,4% face

Paulo, na Epístola, fala-nos da conversão (Fil. gostando somente das coisas terrenas». Praticamente, cada vez que fugimos do sacri-fício, que protestamos contra a dor

• As regras para nomes de classe são bem fáceis: devem começar sempre por um letra e, depois dela, podem ter qual- quer combinação de letras ou números (porém você não

No que se refere ao diagnóstico de coagulação intravas- cular disseminada, assinale a alternativa que apresenta os três critérios diagnósticos mais importantes para esse

estudantes e crie um método que calcule e retorne a somatória das notas de todos os estudantes. Imprima o valor no console... 2) Crie um outro método no programa que liste as notas

O produto a ser ofertado pela MultiFit Gourmet será um tipo de alimentação voltada para pessoas que fazem musculação, que precisam se alimentar de maneira