introdução à orientação a objetos - ricardoluis.com · •paladar •tato •olfato 6...
TRANSCRIPT
Instituto Federal de Educação, Ciência e Tecnologia Sul-Rio-Grandense© 2016 Instituto Federal de Educação, Ciência e Tecnologia Sul-Rio-Grandense
Campus Sapucaia do Sul
Introdução à Orientação a ObjetosProfessor: Ricardo Luis dos Santos
IFSUL – Campus Sapucaia do Sul
Instituto Federal de Educação, Ciência e Tecnologia Sul-Rio-Grandense
• Introdução
• Orientação a Objetos
• Conceitos
• Classes
• Objetos
• Resumo
• Boas Práticas
• Hands on
2
Agenda
Campus Sapucaia do Sul
Instituto Federal de Educação, Ciência e Tecnologia Sul-Rio-Grandense
• Existem diversos paradigmas (filosofia) adotados naconstrução de software
• Imperativo ou Procedural (C, Fortran, etc...)
• Lógico (Prolog, etc...)
• Funcional (Lisp, OCAML, etc...)
• Orientado a Objetos (Java, C++, SmallTalk, etc... )
• Orientado a Aspectos (AspectJ, AspectC++, etc...)
3
Introdução
Campus Sapucaia do Sul
Instituto Federal de Educação, Ciência e Tecnologia Sul-Rio-Grandense
• Programação Estruturada
• Composição dos Programas
• Um programa é composto por um conjunto de rotinas (funções)
• A funcionalidade do programa é separado em funções
• Os dados do programa são variáveis locais ou globais
• Fluxo de Execução
• O programa tem início em uma rotina principal (main)
• A rotina principal chama outros métodos
• Estas funções podem chamar outras funções, sucessivamente
• Ao fim de uma função, o programa retorna para a função que a chamou
4
Introdução
Campus Sapucaia do Sul
Instituto Federal de Educação, Ciência e Tecnologia Sul-Rio-Grandense
• Programação Orientada a Objetos
• Composição dos Programas
• A funcionalidade do programa é agrupada em objetos
• Os dados do programa são agrupados em objetos
• Os objetos agrupam dados e métodos correlacionados
• Fluxo de Execução
• Similar a programação estruturada
• Os objetos colaboram entre si para a solução dos objetivos
• A colaboração se realiza através de chamadas de rotinas
5
Introdução
Campus Sapucaia do Sul
Instituto Federal de Educação, Ciência e Tecnologia Sul-Rio-Grandense
• A OO tenta aproximar o mundo virtual do mundo real
• Modelando aspectos existentes no mundo real para colocá-los em forma de bits e bytes permitindo o processamento simulado em computadores
• Mas primeiro, precisamos compreender melhor o mundo a nossa volta
• Audição
• Visão
• Paladar
• Tato
• Olfato
6
Introdução
Campus Sapucaia do Sul
Instituto Federal de Educação, Ciência e Tecnologia Sul-Rio-Grandense
• Descrevam isto
7
Introdução
Campus Sapucaia do Sul
Instituto Federal de Educação, Ciência e Tecnologia Sul-Rio-Grandense
• Programação Orientada a Objetos
• Surgiu na tentativa de solucionar problemas complexosexistentes através do desenvolvimento de softwares menoscomplexos, confiáveis e com baixo custo dedesenvolvimento e manutenção
• Sugere a redução da distância entre a modelagemcomputacional e o mundo real
8
Introdução
Campus Sapucaia do Sul
Instituto Federal de Educação, Ciência e Tecnologia Sul-Rio-Grandense
• Programação Orientada a Objetos
• Permite que objetos do mundo real sejam mapeados emobjetos no computador, pressupondo que o mundo écomposto por objetos
• Os sistemas são modelados como um conjunto de objetosque interagem entre si
9
Introdução
Campus Sapucaia do Sul
Instituto Federal de Educação, Ciência e Tecnologia Sul-Rio-Grandense
• Programação Orientada a Objetos, por que usar?
• Permite alta reutilização de código
• Reduz tempo de manutenção de código
• Reduz complexidade através da melhoria do grau deabstração do sistema
• Aumenta qualidade e produtividade oferece maioresfacilidades ao desenvolvedor
• Adoção (aceitação) comercial crescente
10
Introdução
Campus Sapucaia do Sul
Instituto Federal de Educação, Ciência e Tecnologia Sul-Rio-Grandense
• Programação Orientada a Objetos, por que usar?
• Velocidade na prototipagem de sistemas
• Reutilização de códigos
• Modularidade no desenvolvimento
• Abstração do mundo real
11
Introdução
Campus Sapucaia do Sul
Instituto Federal de Educação, Ciência e Tecnologia Sul-Rio-Grandense
• Programação Orientada a Objetos, problemas?
• Pensar no paradigma OO simplesmente como uma linguagem
• Aversão a reutilização
• Pensar na OO como uma solução para tudo
• Programação Egoísta:• É preciso documentar!
12
Introdução
Campus Sapucaia do Sul
Instituto Federal de Educação, Ciência e Tecnologia Sul-Rio-Grandense
Estruturada
Sequencia
Decisão
Repetição
OO
Encapsulamento
Herança
Polimorfismo
13
Introdução
Campus Sapucaia do Sul
Instituto Federal de Educação, Ciência e Tecnologia Sul-Rio-Grandense
• Nós (seres humanos) interagimos com o mundo através de objetos
• Estamos sempre identificando objetos ao nosso redor
• Atribuímos nomes
• Classificamos em grupos (classes)
• Vamos tentar agrupar alguns objetos?
14
Como começar?
Campus Sapucaia do Sul
Instituto Federal de Educação, Ciência e Tecnologia Sul-Rio-Grandense
• Definição de Classe
• Classe é a implementação de tipo abstrato de dados (TAD)no paradigma orientado a objetos
• Uma classe é um “molde” para a criação de objetos. Aclasse define as propriedades (atributos) e oscomportamentos (métodos)
• Uma classe define como produzir (instanciar) objetos apartir dela
• Exemplos
• Carro, Felinos, Alunos, Professores
15
Orientação a Objetos
Campus Sapucaia do Sul
Instituto Federal de Educação, Ciência e Tecnologia Sul-Rio-Grandense
• Definição de Objeto
• Um objeto é a representação computacional de um elemento ou processo do mundo real
• Cada objeto possui um conjunto de características e comportamentos
• Um objeto é a instância de uma classe
16
Orientação a Objetos
Campus Sapucaia do Sul
CLASSE P
P1P2P3
Instituto Federal de Educação, Ciência e Tecnologia Sul-Rio-Grandense
• Definição de Objeto
• Um objeto é uma construção de software que encapsulaestado e comportamento, através respectivamente depropriedades (atributos) e operações (métodos)
• Objetos interagem entre si através de mensagens
• Exemplos
• Carros: Fusca, Gol, Sonic, Ka, Stillo
• Felinos: Gato, Tigre, Leão
• Alunos: João, Maria, Carlos, Carolina
• Professores: Girafales, Remor, Ricardo
17
Orientação a Objetos
Campus Sapucaia do Sul
Instituto Federal de Educação, Ciência e Tecnologia Sul-Rio-Grandense
• Definição de Objeto
• Estado de um Objeto
• Composto por suas propriedades e seus respectivos valores
• Comportamento
• Maneira como o objeto reage quando o seu estado é alterado ouquando uma mensagem é recebida
• Características
• São as propriedades que definem um objeto (cor, idade, altura,modelo, marca ...)
18
Orientação a Objetos
Campus Sapucaia do Sul
Instituto Federal de Educação, Ciência e Tecnologia Sul-Rio-Grandense
• Definição de Objeto
• Uma característica descreve uma propriedade de um objeto (atributo), ou seja, algum elemento que descreva o objeto
• Exemplo de características de um objeto identificado como carro
• Cor
• Marca
• Número de portas
• Ano de fabricação
• Consumo
• Tipo de combustível
19
Orientação a Objetos
Campus Sapucaia do Sul
Instituto Federal de Educação, Ciência e Tecnologia Sul-Rio-Grandense
• Definição de Objetos
• Um comportamento representa uma ação ou reposta(método) de um objeto a uma ação do mundo real
• Exemplo de comportamentos de um objeto identificado como carro
• Acelerar
• Parar
• Estacionar
• Lecionar
• Estudar
• Almoçar
• ...
20
Orientação a Objetos
Campus Sapucaia do Sul
Instituto Federal de Educação, Ciência e Tecnologia Sul-Rio-Grandense
• Outros Exemplos
• Cachorro
• Características: nome, cor, raça
• Comportamentos: latir, correr
• Bicicleta
• Características: marcha, quantidade de marchas, velocidade
• Comportamentos: trocar marcha, aplicar freios
21
Orientação a Objetos
Campus Sapucaia do Sul
Instituto Federal de Educação, Ciência e Tecnologia Sul-Rio-Grandense
Mundo Virtual
Atributos Métodos
Mundo Real
Características Comportamentos
22
Orientação a Objetos
Campus Sapucaia do Sul
Instituto Federal de Educação, Ciência e Tecnologia Sul-Rio-Grandense23
Orientação a Objetos
Campus Sapucaia do Sul
• Identificar as características e o comportamento de objetos do mundo real é o primeiro passo da Programação Orientada a Objetos
• Para tanto, devemos nos perguntar
• Quais as possíveis características relevantes deste objeto e quais estados elas assumem?
• Quais comportamentos (ações) que ele deve executar?
Instituto Federal de Educação, Ciência e Tecnologia Sul-Rio-Grandense24
Orientação a Objetos
Campus Sapucaia do Sul
• Abstrair é a resposta (42)!
• Objetos não são considerados isoladamente
• Um processo natural é identificar características e comportamentos semelhantes entre os objetos
• Objetos com características e comportamentos semelhantes são agrupados em classes
Instituto Federal de Educação, Ciência e Tecnologia Sul-Rio-Grandense25
Orientação a Objetos
Campus Sapucaia do Sul
Carro
marcamodeloanoplacachassicorcorLateralvelocidadeconsumotipoCombustivel
movimentarpararacelerarestacionargetVelocidade
Atributos
Métodos
Instituto Federal de Educação, Ciência e Tecnologia Sul-Rio-Grandense26
Orientação a Objetos
Campus Sapucaia do Sul
Carro
marcamodeloanoplacachassicorcorLateralvelocidadeconsumotipoCombustivel
movimentarpararacelerarestacionargetVelocidade
Atributos
Métodos
Instituto Federal de Educação, Ciência e Tecnologia Sul-Rio-Grandense27
Orientação a Objetos
Campus Sapucaia do Sul
Instituto Federal de Educação, Ciência e Tecnologia Sul-Rio-Grandense28
Orientação a Objetos
Campus Sapucaia do Sul
• Objetos colaboram através da troca de mensagens
• A troca de mensagens representa a chamada de um método
Freiar
Instituto Federal de Educação, Ciência e Tecnologia Sul-Rio-Grandense29
Orientação a Objetos
Campus Sapucaia do Sul
• Um envio de mensagem sempre possui
Freiar
Emissor
Receptor
Seletor de mensagens (método)
Parâmetros (opcionais)
Retorno de valor (opcional)
Instituto Federal de Educação, Ciência e Tecnologia Sul-Rio-Grandense30
Resumindo
Campus Sapucaia do Sul
• Objeto
É uma instância que possui dados (características) e métodos (operações ou ações)
• Método
É uma sub-rotina interna no objeto que informa como executar uma ação
• Classe
É um recipiente para construir objetos. Ela sabe as variáveis que estão no objeto e detém os métodos para cada objeto
MensagemPerguntar a um objeto alguma coisa é chamado de:
“envio de mensagem.” Isto é similar a solicitar uma rotina
Instituto Federal de Educação, Ciência e Tecnologia Sul-Rio-Grandense31
Resumindo
Campus Sapucaia do Sul
• A classe provê a estrutura para a construção de objetos
• Um objeto é uma instância de uma classe
• Um objeto possui características, comportamentos e um estado (valores de seus atributos)
• O comportamento de um objeto é exposto através de métodos
Instituto Federal de Educação, Ciência e Tecnologia Sul-Rio-Grandense
BOAS PRÁTICAS
32Campus Sapucaia do Sul
Instituto Federal de Educação, Ciência e Tecnologia Sul-Rio-Grandense33
Boas práticas
Campus Sapucaia do Sul
• Nome de classes
• Acentos e cedilha são desaconselhados
• O “compilador” usa o nome das classes pra nomear arquivos
• Números podem aparecer após uma letra
• $ e _ são considerados letras
• Maiúsculas <> minúsculas
• Há palavras reservadas
Instituto Federal de Educação, Ciência e Tecnologia Sul-Rio-Grandense34
Boas práticas
Campus Sapucaia do Sul
• Nome de classes
• Iniciar nomes de classes com maiúsculas
• Usar maiúsculas para separar palavras
• CadastroDeFuncionario
• Uma classe por arquivo
• Usar o mesmo nome para o arquivo (com extensão .java) e para a classe
Instituto Federal de Educação, Ciência e Tecnologia Sul-Rio-Grandense35
Boas práticas
Campus Sapucaia do Sul
Instituto Federal de Educação, Ciência e Tecnologia Sul-Rio-Grandense36
Boas práticas
Campus Sapucaia do Sul
• Nomes de atributos de classes
• Acentos e cedilha podem ser usados sem restrição
• Números podem aparecer após letra
• _ e $ são considerados letra
• Maiúsculas <> minúsculas
• Há palavras reservadas
• É possível declarar vários campos com o mesmo tipo (ou classe) separando seus nomes por vírgulas
Instituto Federal de Educação, Ciência e Tecnologia Sul-Rio-Grandense37
Boas práticas
Campus Sapucaia do Sul
• Nomes de atributos de classes
• Iniciar nomes de campos de classes com minúsculas
• Usar maiúsculas para separar palavras
• anoFabricacao
• anoModelo
• numeroDias
• velocidade
Instituto Federal de Educação, Ciência e Tecnologia Sul-Rio-Grandense38
Boas práticas
Campus Sapucaia do Sul
• Nomes de métodos
• Mesmas regras que nomes de campos
• Iniciar nomes de métodos com minúsculas
• Usar maiúsculas para separar palavras
• mostrarCampos
• acende
• inicializa
• transferirDinheiro
Instituto Federal de Educação, Ciência e Tecnologia Sul-Rio-Grandense
HANDS ON
39Campus Sapucaia do Sul
Instituto Federal de Educação, Ciência e Tecnologia Sul-Rio-Grandense40
Hands On – Rápida explicação
Campus Sapucaia do Sul
• Um objeto é uma instância de uma única classe
• Uma instância de um objeto é uma unidade de programação que é armazenada em uma variável
• Um programa orientado a objetos é composto por um conjunto de objetos que interagem entre si para a solução de um problema
Instituto Federal de Educação, Ciência e Tecnologia Sul-Rio-Grandense41
Hands On
Campus Sapucaia do Sul
Atributos
Métodos
Carro
id: intmarca: Stringmodelo: Stringano: intplaca: Stringchassi: Stringcor: StringcorLateral: Stringvelocidade: doubleconsumo: doubletipoCombustivel: String
Carro()movimentar(): voidparar(): voidacelerar(velocidade: double): voidestacionar(): voidgetVelocidade(): double
Instituto Federal de Educação, Ciência e Tecnologia Sul-Rio-Grandense42
Hands On
Campus Sapucaia do Sul
Instituto Federal de Educação, Ciência e Tecnologia Sul-Rio-Grandense43
Hands On – Construtor Completo
Campus Sapucaia do Sul
Instituto Federal de Educação, Ciência e Tecnologia Sul-Rio-Grandense44
Hands on
Campus Sapucaia do Sul
• Criar vários carros diferentes
• Exibir todos os atributos de todos os objetos
• Colocar os carros em arrays?
• Sobrescrever o método toString() do Object
Instituto Federal de Educação, Ciência e Tecnologia Sul-Rio-Grandense45
Hands on
Campus Sapucaia do Sul
• Criar uma classe Jogador conforme
• Cadastrar pelo menos um timecompleto (11 jogadores)
• Um jogador está suspenso pelo 3 cartãoamarelo ou quando recebe uma punição(vermelho ou tribunal)
• Ao final, imprimir a lista com todos os jogadores, informando quem está apto para jogar
Jogador
id: intnome: Stringapelido: StringdataNascimento: Datenumero: intposicao: Stringqualidade: intcartoes: intsuspenso: Boolean
Jogador()Jogador(all attrs)verificarCondicaoDeJogo(): Boolean
Instituto Federal de Educação, Ciência e Tecnologia Sul-Rio-Grandense46
Hands on
Campus Sapucaia do Sul
• Criar dois novos métodos na classe Jogador
• aplicarCartao(int quantidade): void - Aplica a quantidade de cartões informada ao jogador
• cumprirSuspencao(): void – Esse método vai zerar a quantidade de cartões e tornar o jogador apto a jogar
• Criar uma nova Classe Time
• Criar um método para relacionar 18jogadores observando apenas aqualidade de cada jogador e a suspensão
• No método main exibir esta escalação
• DESAFIOConsiderar a posição no momento da escalação
Time
nome: Stringapelido: Stringfundacao: Dateplantel: ArrayList<Jogador>relacionados: ArrayList<Jogador>
Time()Time(all attrs)relacionarJogadores(): ArrayList<Jogador>
Instituto Federal de Educação, Ciência e Tecnologia Sul-Rio-Grandense47
Hands on
Campus Sapucaia do Sul
• Um desenvolvedor precisa modelar uma classe para mapear os funcionários de uma empresa
• Entre os atributos que o sistema precisa manipular estão
• Nome, sobrenome, data de nascimento, matricula , o salário do funcionário, endereço, e-mail e o cpf
• Entre os métodos que o sistema precisa manipular estão
• Receber aumento de salario, calcular o rendimento anual total do funcionário, calcular o imposto pago mensalmente pelo funcionário, calcular o total anual de imposto pago pelo funcionário. Adicionar também pelo menos 3 construtores
• CRIE o diagrama que representa esta classe
• CRIE a classe com a devida assinatura dosmétodos (não é necessário implementá-los)
Instituto Federal de Educação, Ciência e Tecnologia Sul-Rio-Grandense48
Hands on
Campus Sapucaia do Sul
• Criar uma classe de Funcionário com os atributos
• Crie alguns métodos de acordo com sua necessidade
• receberAumento(int valor): void - que aumenta o salario do funcionário de acordo com o parâmetro informado
• calcularGanhoAnual(): Double - não recebe parâmetro algum, devolvendo o valor do salário anual
• Se necessário calcule o imposto (% em variáveis no construtor)
• O funcionário paga 11% de INSS
• Se o salário é maior que R$ 2.500,00 é cobrado 17,5% de IR do excedente
• calcularImposto(): Double - não recebe nenhumparâmetro e devolve o imposto pago no decorrerde um ano
Instituto Federal de Educação, Ciência e Tecnologia Sul-Rio-Grandense49
Hands On 1
Campus Sapucaia do Sul
• Vamos definir classes necessárias para criar um banco simples
• Quais classes, atributos e métodos devem ser criados?
• Cadastros?
• Endereços?
• Sacar?
• Neste momento não é necessário implementar aschamadas de objetos para executar as ações
• Fazer um diagrama de classes no quadro
Instituto Federal de Educação, Ciência e Tecnologia Sul-Rio-Grandense50
Campus Sapucaia do Sul
Criar uma conta Especial que tem limite e que cobra juros para o valor usado
Criar uma conta Poupança e calcular os rendimentos para esta conta
Instituto Federal de Educação, Ciência e Tecnologia Sul-Rio-Grandense51
Hands On 2
Campus Sapucaia do Sul
• Criar um jogo da velha para 2 jogadores
• Averiguar se um jogador ganhou a cada movimento
• Exibir no console passo a passo como está o tabuleiro
• DESAFIO 1
• Fazer o computador assumir o lugar de um jogador (tentar ganhar)
Instituto Federal de Educação, Ciência e Tecnologia Sul-Rio-Grandense52
Hands On 3 (Desafio)
Campus Sapucaia do Sul
• Criar um jogo da velha para até 3 jogadores• Criar um outro jogo da velha tridimensional (novas classes)
• Ganha quem fizer o maior número de “linhas”
• DESAFIO 1
• Fazer um algoritmo para jogar contra um humano o jogo da velha 3D