Introdução a Orientação a Objetos

Documentos relacionados
Orientação a Objetos. Leonardo Gresta Paulino Murta.

Subprogramação e Orientação a Objetos

Subprogramação. Vanessa Braganholo

Herança e Polimorfismo

Classes e Objetos. Sintaxe de classe em Java

Linguagem de Programação III

Variáveis Compostas. Vanessa Braganholo

Linguagem de Programação II Implementação

Palavras Reservadas da Linguagem Java

CONCEITOS BÁSICOS DE ORIENTAÇÃO A OBJETOS PROF. ME. HÉLIO ESPERIDIÃO

Classes o Objetos. Classes, objetos, métodos e variáveis de instância

Introdução a classes e objetos. Prof. Marcelo Roberto Zorzan

Análise de Programação

Esta categoria mais geral, à qual cada objeto pertence, denominamos de classe; IFSC/POO + JAVA - prof. Herval Daminelli

Paradigmas de Programação. Java First-Tier: Aplicações. Orientação a Objetos em Java (I) Nomenclatura. Paradigma OO. Nomenclatura

Modificadores de Acesso JAVA

Para entender o conceito de objetos em programação devemos fazer uma analogia com o mundo real:

Organização de programas em Java

CA: Cidade: UF CARTÃO RESPOSTA QUESTÃO RESPOSTA QUESTÃO RESPOSTA A F B G C H D I

Classes e Objetos INTRODUÇÃO À ORIENTAÇÃO A OBJETOS COM JAVA - MÓDULO II. Classes. Objetos. Um modelo para a criação de objetos

Programação Orientada a Objetos

Algoritmos e Programação 2. Objetos e Classes em Java. Classes. Revisão. Definições de classes incluem (geralmente):

Orientação a objetos. Programação. Orientada a Objetos. Orientação a objetos. Orientação a objetos. Abstração e encapsulamento

Linguagem de Programação II Implementação

Organização de programas em Java

Programação com Objectos. Processamento de Dados I. 2. Classes, Atributos e Métodos

Programação Orientada a Objectos - P. Prata, P. Fazendeiro

Prof. Rogério Albuquerque de Almeida. Programação Orientada a Objetos II Java Terceira aula

Encapsulamento e Métodos (Construtores e Estáticos) João Paulo Q. dos Santos

Linguagem de Programação III

COMPORTAMENTOS - Observações

Tema da aula Introdução ao paradigma de programação: Orientado a Objetos

Programação Orientada a Objetos

5 Arrays. 5.1 Criando um array. 5.2 Inicializando arrays. c:\>java Array Janeiro tem 31 dias.

Introdução a classes e objetos. Prof. Marcelo Roberto Zorzan Prof a. Rachel Reis

Linguagem de Programação II Programação Orientada a Objetos. Orientação a Objetos

Programação Orientada a Objetos II

Introdução. Atributos em Java. Atributos. Acesso à atributos em Java. Atributo versus variável. Atributos, métodos e encapsulamento.

Orientação a Objetos e Java

Programação Orientada a Objetos. Vagner Luz do Carmo - Vluzrmos

Classes, Métodos e Propriedades

Aula 5 POO 1 Encapsulamento. Profa. Elaine Faria UFU

PROGRAMAÇÃO ORIENTADA A OBJETOS JAVA

Organização de programas em Java

[Linguagem de Programação 3] [Aula 01] [Gustavo Yoshio Maruyama]

Unidade Acadêmica: Faculdade de Computação FACOM Disciplina: Programação Orientada a Objetos I Professor: Fabiano Azevedo Dorça Prática 01

Programação Orientada a Objetos. Aula 1.9 this e static. Prof. Bruno Moreno

Programação Orientada a Objetos. Professor: André Luis Meneses Silva br.geocities.com/programacao2ufs

Array em Java. Figura 1 - Exemplo de um array de inteiros

Java First-Tier: Aplicações. Herança: Simples Múltipla. Orientação a Objetos em Java (III) Problemas de Herança Múltipla.

RESULUÇÃO DOS EXERCÍCIOS E INSTRUÇÕES DE DECISÃO (if{} e else{}) Profº André Aparecido da Silva Disponível em:

E N C A P S U L A M E N T O P R O F. M E. H É L I O E S P E R I D I Ã O

Programação Orientada a Objeto (POO)

Linguagem de Programação Orientada a Objeto Abstração - Encapsulamento

Linguagem de programação Programação Orientada a objetos

Universidade Estadual de Santa Cruz

Aula 4 Encapsulamento e Relacionamento Cleverton Hentz

Programação por Objectos. Java

1 Introdução e Conceitos básicos

DIRETORIA ACADÊMICA DE GESTÃO E TECNOLOGIA DA INFORMAÇÃO DIATINF TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS TADS

Desenvolvimento Web TCC Turma A-1

Visibilidade e Encapsulamento

Dados armazenados em um objeto podem ser tanto primitivos, tais como inteiros ou caracteres, ou referências para outros objetos.

Programação Orientada a Objetos

Programação para Games II. Professor Ariel da Silva Dias Orientação a Objetos

Linguagem de programação Java

Programação Orientada a Objetos. Métodos e Atributos. Métodos. Métodos. Alexandre César Muniz de Oliveira. Parte III

CIÊNCIA DA COMPUTAÇÃO - LINGUAGEM DE PROGRAMAÇÃO II REVISÃO POO

Linguagem de Programação JAVA. Tiago Alves de Oliveira

Classe Abstrata e Interface

Transcrição:

Introdução a Orientação a Objetos Leonardo Gresta Paulino Murta leomurta@ic.uff.br

Aula de hoje Estudaremos outras duas estruturas de encapsulamento da Orientação a Objetos Classes Pacotes Leonardo Murta Introdução a OO 2

Paradigma procedimental versus OO O paradigma procedimental organiza o programa em termos de algoritmos O paradigma OO organiza o programa em termos de objetos Algoritmos Objetos Leonardo Murta Introdução a OO 3

AlgoritmosObjetos Podemos criar programa pensando em termos de objetos ao invés de algoritmos? O mundo é composto de objetos Uma loja tem produtos, pedidos, estoque, etc. Um restaurante tem mesas, garçons, comidas, bebidas, etc. Uma universidade tem professores, alunos, disciplinas, etc. Uma rodoviária tem ônibus, passageiros, bagagens, etc. E se criarmos programas basicamente criando objetos equivalentes ao mundo real, e fazendo com que esses objetos se comuniquem? Leonardo Murta Introdução a OO 4

Objetos Definição Um objeto é a representação computacional de um elemento ou processo do mundo real Cada objeto possui suas caracterís;cas e seu comportamento Exemplos de Objetos cadeira mesa caneta lápis carro piloto venda mercadoria cliente aula programa computador aluno avião Leonardo Murta Introdução a OO 5

Definição Uma caracterísoca descreve uma propriedade de um objeto, ou seja, algum elemento que descreva o objeto. Cada caracterísoca é chamada de atributo e funciona como uma variável pertencente ao objeto Exemplo de caracterísocas do objeto carro Cor Marca CaracterísOcas de Objetos Número de portas Ano de fabricação Tipo de combussvel Leonardo Murta Introdução a OO 6

Comportamento de Objetos Definição Um comportamento representa uma ação ou resposta de um objeto a uma ação do mundo real Cada comportamento é chamado de método e funciona como um procedimento/função pertencente ao objeto Exemplos de comportamento para o objeto carro Acelerar Frear Virar para direita Virar para esquerda Leonardo Murta Introdução a OO 7

Mapeamento de Objetos Objeto no Mundo Real Objeto Computacional Características Atributos Comportamento Métodos Leonardo Murta Introdução a OO 8

Paradigma Procedimental versus OO (exemplo: Agenda) Paradigma Procedimental Variáveis Vetor de nomes Vetor de endereços Vetor de telefones Procedimentos Listagem de todos os nomes Listagem do endereço dado um nome Listagem do telefone dado um nome Adição de nome, endereço e telefone Remoção de nome, endereço e telefone Paradigma OO Objeto Agenda Atributo Vetor de Contatos Métodos Listagem de Contatos Adição de um Contato Remoção de um Contato Objeto Contato Atributos Nome Endereço Telefone Métodos Exibição de nome, endereço e telefone Edição de nome, endereço e telefone Leonardo Murta Introdução a OO 9

Paradigma OO (Exemplo: total da compra) Pedido: 12345 Cliente: João da Silva Endereço: Rua dos Bobos, número zero Item Produto Preço QuanOdade Subtotal 1 Açúcar R$ 2,00 5 R$ 10,00 2 Macarrão R$ 2,50 2 R$ 5,00 3 Feijão R$ 3,00 3 R$ 9,00 TOTAL R$ 24,00 Quais são os objetos participantes do cálculo do total da compra? Leonardo Murta Introdução a OO 10

Paradigma OO (Exemplo: total da compra) Pedido: 12345 Cliente: João da Silva Endereço: Rua dos Bobos, número zero Item Produto Preço QuanOdade Subtotal 1 Açúcar R$ 2,00 5 R$ 10,00 2 Macarrão R$ 2,50 2 R$ 5,00 3 Feijão R$ 3,00 3 R$ 9,00 TOTAL R$ 24,00 Item 1 Produto Açúcar 5 2,00 Pedido 12345 Item 2 Produto Macarrão 2 2,50 Item 3 3 Produto Feijão 3,00 Leonardo Murta Introdução a OO 11

Paradigma OO (Exemplo: total da compra) Como obter o total da compra? 1. O objeto Caixa pediria ao objeto Pedido seu valor total 2. O objeto Pedido, por sua vez, percorreria todos os seus objetos Item perguntando o seu valor subtotal e somaria esses valores para responder ao objeto Caixa 3. Cada objeto Item perguntaria ao objeto Produto o seu preço e muloplicaria esse preço pela quanodade que está sendo comprada, para responder ao objeto Pedido Leonardo Murta Introdução a OO 12

CLASSES Leonardo Murta Introdução a OO 13

Classes versus Objetos A Classe é o ;po do Objeto Fonte: livro Object-Oriented Analysis and Design with Applications Leonardo Murta Introdução a OO 14

Classes versus Objetos Valores têm Opos primiovos 123 é um valor inteiro True é um valor booleano 12,3 é um valor real Objetos pertencem a classes João, Pedro e Paulo são da classe Pessoa Fusca e Ferrari são da classe Carro Flamengo e Fluminense são da classe Time Tipos PrimiOvos Valores Classes Objetos Leonardo Murta Introdução a OO 15

Classes versus Objetos Uma classe é uma fôrma, capaz de produzir objetos Os programadores criam classes, as classes instanciam objetos João, 10 anos, olhos verdes Paulo, 40 anos, olhos castanhos Classe Pessoa Maria, 14 anos, olhos azuis Isabel, 90 anos, olhos verdes Pedro, 56 anos, olhos marrons Leonardo Murta Introdução a OO 16

Classes A classe descreve as caracterísocas e comportamento de um conjunto de objetos Em Java, cada objeto pertence a uma única classe O objeto possuirá os atributos e métodos definidos na classe O objeto é chamado de instância de sua classe A classe é o bloco básico para a construção de programas OO Leonardo Murta Introdução a OO 17

Exemplo de Classe public class Carro { private int velocidade; public void acelera() { velocidade++; } Atributos (características) são variáveis globais acessíveis por todos os métodos da classe Métodos (comportamentos) } public void freia() { } velocidade--; Leonardo Murta Introdução a OO 18

Criação de objetos A classe é responsável pela criação de seus objetos via método construtor Mesmo nome da classe Sem Opo de retorno public Carro(int velocidadeinicial) { } velocidade = velocidadeinicial; Leonardo Murta Introdução a OO 19

Criação de objetos Objetos devem ser instanciados antes de uolizados O comando new instancia um objeto, chamando o seu construtor Exemplo: Carro fusca = new Carro(10); Carro bmw = new Carro(15); fusca.freia(); bmw.acelera(); fusca = bmw; Qual a velocidade de cada carro em cada momento? O que acontece aqui? Leonardo Murta Introdução a OO 20

Criação de objetos Valor null: UOlizado para representar um objeto não inicializado Quando um método retorna um objeto, ele pode retornar null para indicar, por exemplo, que o objeto não foi encontrado É possível atribuir null para descartar um objeto previamente instanciado Exemplo: Carro fusca = new Carro(10); fusca.acelera(); fusca = null; Leonardo Murta Introdução a OO 21

PACOTES Leonardo Murta Introdução a OO 22

Pacotes UOlizados para agregar classes relacionadas O pacote de uma classe é indicado na primeira linha da classe Declaração package Se uma classe não declara seu pacote, o interpretador assume que a classe pertence a um pacote default package br.uff.ic; public class Pessoa {... } Leonardo Murta Introdução a OO 23

Pacotes Modificadores permitem que determinadas classes sejam visíveis apenas para outras classes do mesmo pacote Leonardo Murta Introdução a OO 24

Pacotes Sempre que for usar uma classe de outro pacote, é necessário importar A importação se realiza através da palavra-chave import, seguida do nome da classe desejada As importações são apresentadas antes da declaração da classe mas depois da declaração do pacote A importação de um pacote não importa os subpacotes recursivamente package br.uff.ic.prog1; import java.util.scanner; public class Fisica {... } Leonardo Murta Introdução a OO 25

Regra de ouro para classes e pacotes Classes devem ser mapeadas em arquivos com o mesmo nome Classe Pessoa Arquivo Pessoa.java Pacotes devem ser mapeados em diretórios Pacote br.uff.ic Diretório br\uff\ic Se o nome completo da classe é br.uff.ic.pessoa Deve haver br\uff\ic\pessoa.java Leonardo Murta Introdução a OO 26

ATRIBUTOS E MÉTODOS Leonardo Murta Introdução a OO 27

Modificadores Atributos e métodos podem ter diferentes visibilidades e escopos Estamos até agora usando somente os modificadores public sta7c O que significam esses modificadores? Quais outros modificadores existem? Leonardo Murta Introdução a OO 28

Modificador de visibilidade Indica quem pode acessar o atributo ou método: O modificador private indica que o atributo ou método pode ser chamado apenas por outros métodos da própria classe A ausência de modificador é conhecida como package, e indica que o atributo ou método pode ser chamado somente por classes do mesmo pacote O modificador protected indica que o atributo ou método pode ser chamado somente por classes do mesmo pacote ou subclasses; O modificador public indica que o atributo ou método pode ser chamado por qualquer outra classe Leonardo Murta Introdução a OO 29

Modificador de escopo Indica a quem pertence o método (ou atributo) Ao objeto (instância) À classe como um todo (comparolhado para todas as instâncias) Atributos ou métodos estáocos (sta7c) pertencem à classe como um todo Podem ser chamados diretamente na classe, sem a necessidade de instanciar objetos Métodos estáocos só podem manipular atributos estáocos A ausência do modificador sta7c indica que o atributo ou método é de instância Leonardo Murta Introdução a OO 30

Agora já sabemos ler!!! public staoc void main(string[] args) Leonardo Murta Introdução a OO 31

Passagem por valor vs. passagem por referência Algumas linguagens permitem passagem de argumentos por referência Não é o caso de Java, que sempre faz passagem por valor Diferenças Passagem por valor = cópia dos valores para outra posição de memória Passagem por referência = reuso da posição de memória Leonardo Murta Introdução a OO 32

Passagem por valor vs. passagem por referência Variáveis que contêm Opos primiovos (byte, short, int, long, float, double, char, boolean) sempre ocupam diretamente uma posição na memória nota1 flathebest nota2 nota3 bloco 8.2 true 6.0 7.1 A Leonardo Murta Variáveis Compostas 33

Passagem por valor vs. passagem por referência Variáveis que contêm objetos na verdade guardam a posição de memória dos objetos velocidade: 10 cor: branca &1234 fusca &1234 Leonardo Murta Variáveis Compostas 34

Passagem por valor vs. passagem por referência Quando é passado um objeto por valor a referência é copiada Mudanças nos atributos dos objetos são vistas de fora Instanciações de novos objetos nas variáveis não são vistas de fora Leonardo Murta Introdução a OO 35

Classes são Opos! Classes podem ser uolizadas como Tipos dos atributos de uma outra classe Parâmetros de um método Tipo de retorno de um método Leonardo Murta Introdução a OO 36

Classes são Opos! Time Jogador class Time { private Jogador[] jogadores; public Jogador getjogador(int numero) {... public void escala(jogador jogador) {... } class Jogador { private Time time; } Leonardo Murta Introdução a OO 37

Exercício 1 IdenOfique as classes para a seguinte especificação: O supermercado vende diferentes 7pos de produtos. Cada produto tem um preço e uma quan7dade em estoque. Um pedido de um cliente é composto de itens, onde cada item especifica o produto que o cliente deseja e a respec7va quan7dade. Esse pedido pode ser pago em dinheiro, cheque ou cartão. Leonardo Murta Introdução a OO 38

Exercício 2 Refaça o exercício da aula de variáveis compostas usando somente um vetor (e classe) no lugar de dois vetores (um de nomes e outro de idades) Lembrete: o exercício era para listar 10 pessoas ordenado por nome e depois por idade Leonardo Murta Introdução a OO 39

Exercício 3 Refaça o exercício da aula de subprogramação usando uma classe para representar a calculadora Leonardo Murta Introdução a OO 40

Introdução a Orientação a Objetos Leonardo Gresta Paulino Murta leomurta@ic.uff.br