Introdução à Orientação a Objetos

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

1 Introdução e Conceitos básicos

Exercícios sobre Orientação a Objetos

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

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

Introdução à Orientação a Objetos

Programação Orientada a Objetos

Introdução ao Java. Prof. Herbert Rausch Fernandes

Técnicas de Orientação à Objeto. Introdução Modelagem de objeto, classe, atributos e métodos em linguagem Java Desenvolvimento Guiado por Testes

Introdução ao Ambiente Java

Introdução à Orientação a Objetos em Java

Introdução ao paradigma da orientação a objetos

Programação Orientada a Objetos

Televisao tamanho tela emitirsom. conectarperifericos

Linguagem de Programação I Apresentação da Disciplina

ORIENTAÇÃO A OBJETOS Histórico:

Daniel Wildt

Ederson Luiz da Silva Ciência da Computação. Algoritmos e Programação

A programação orientada a objetos tenta simular estes aspectos, trazendo para o computador a realidade do dia-a-dia.

Introdução. Parte 01. Desenvolvimento de Programação Orientada a Objetos. Prof. Pedro Neto

Unidade: Introdução à POO (Programação Orientada a Objetos)

Modelo do Mundo Real. Abstração. Interpretação

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

Introdução a orientação a objetos

Programação Orientada a Objetos

POO Paradigma Orientado a Objetos. POO Paradigma Orientado a Objetos. POO Paradigma Orientado a Objetos. POO Paradigma Orientado a Objetos

Orientação a objetos. Objetos ou Instâncias I

Orientação a Objetos (OO) Java Avançado Revisão do Paradigma de. Orientação a Objetos (OO) Programação Orientada a Objetos. Programação Procedimental

Herança e Polimorfismo

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

PROGRAMAÇÃO ORIENTADA A OBJETOS JAVA

Introdução aos Algoritmos

Visibilidade e Encapsulamento

Introdução à UML. Prof. Jesus José de Oliveira Neto

MODELAGEM VISUAL DE OBJETOS COM UML DIAGRAMA DE CLASSES.

Programação Orientada a Objetos JAVA - NETBEANS

Introdução a Programação Orientada a Objetos

Introdução aos Algoritmos

O PARADIGMA ORIENTADO POR OBJETOS

Programação Orientada a Objetos

LÓGICA DE PROGRAMAÇÃO (JAVA) CLASSES E OBJETOS. Professor Carlos Muniz

Aula II Orientação a Objetos. Pedro Baesse Alves Pereira

Algoritmos e Programação II

Capítulo 2. Orientação a Objetos

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

Introdução à Orientação a Objetos

Introdução à Programação. Conceitos Básicos de Orientação a Objetos

UNIVERSIDADE FEDERAL DE SANTA MARIA CENTRO DE TECNOLOGIA AULA 15 PROFª BRUNO CALEGARO

Aula 04 Introdução à Programação Orientada à Objetos

Programação Orientada a Objetos em Python

PONTIFÍCIA UNIVERSIDADE CATÓLICA DE GOIÁS PRÓ-REITORIA DE GRADUAÇÃO ESCOLA DE CIÊNCIAS EXATAS E DA COMPUTAÇÃO PLANO DE ENSINO

Análise de Sistemas 3º Bimestre (material 2)

UNIVERSIDADE FEDERAL DE MATO GROSSO DO SUL SISTEMAS DE INFORMAÇÃO - CÂMPUS DE COXIM FUNDAMENTOS EM ORIENTAÇÃO A OBJETOS

Tópicos da Aula. Conceitos de programação orientada a objetos. Projeto orientado a objetos com UML

Fundamentos de Programação

Programação Orientada a Objetos Classes e Objetos. Prof. Vicente Paulo de Camargo

PDS Aula 1.2 Introdução a Java, POO e Composição. Prof. Bruno Moreno

Programação Orientada a Objetos

Levantamento, Análise e Gestão Requisitos. Aula 03

Técnico em Informática. Web JavaScript. Profª Ana Paula Mandelli

Tipos Abstratos de Dados

AULA 13 MÉTODOS. Disciplina: Programação Orientada a Objetos Professora: Alba Lopes

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

Fundamentos de Programação 1

Programação Orientada a Objetos

Programação Orientada a Objetos

Desenvolvimento Web TCC Turma A-1

PROGRAMAÇÃO ESTRUTURADA E ORIENTADA A OBJETOS

Conceitos de Programação Orientada a Objetos

SEMINÁRIOS INTEGRADOS EM SISTEMAS DE INFORMAÇÃO. Luiz Leão

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

Aula 1 Conceitos Básicos

Aula 2 POO 1 Introdução. Profa. Elaine Faria UFU

Linguagem de Programação Orientada a Objeto Polimorfismo, Classes Abstractas e Interfaces

Programação Orientada a Objetos (DPADF 0063)

Prof: Ricardo Quintão Site:

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

Orientação a Objetos Parte I. Introdução a POO (Programação Orientada a Objetos)

Linguagem de Programação III

Orientação a Objetos. Vanessa Braganholo

Conceitos de Programação Orientada a Objetos

Programação Orientada a Objetos

Aula 15 Modelagem de Classes de Análise. Análise de Sistemas Prof. Filipe Arantes Fernandes

Interfaces e Classes Abstratas

Engenharia de Software Projeto de software

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

Computação II Orientação a Objetos

UNIVERSIDADE FEDERAL DE MATO GROSSO DO SUL SISTEMAS DE INFORMAÇÃO - CÂMPUS DE COXIM FUNDAMENTOS EM ORIENTAÇÃO A OBJETOS

Professor Jefferson Chaves Jefferson de Oliveira Chaves

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

Programação Orientada a Objetos Introdução a POO

Engenharia de Software. Aula 10 Representação dos Conceitos de Orientação a Objetos. Prof. Me. Rogério Ferreira

Aula 03 Introdução à Java. Disciplina: Fundamentos de Lógica e Algoritmos Prof. Bruno Gomes

AULA 02. OBJETIVO: Características da Linguagem Orientada a Objetos.

Introdução. Programação Orientada a Objetos (POO) João Paulo Q. dos Santos

O que é um jogo digital?

Conteúdo desta aula. Importância da AOO Conceito de Abstração Introdução à UML Introdução ao diagrama de classes

Princípios de Análise e Projeto Orientados a Objetos com UML

Transcrição:

Introdução à Orientação a Objetos Professor: Ricardo Luis dos Santos IFSUL 2016

Agenda Introdução Orientação a Objetos Conceitos Classes Objetos Resumo Boas Práticas Hands on 2

Introdução Existem diversos paradigmas (filosofia) adotados na construçã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 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 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 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 Descrevam isto 7

Introdução Programação Orientada a Objetos Surgiu na tentativa de solucionar problemas complexos existentes através do desenvolvimento de softwares menos complexos, confiáveis e com baixo custo de desenvolvimento e manutenção Sugere a redução da distância entre a modelagem computacional e o mundo real 8

Introdução Programação Orientada a Objetos Permite que objetos do mundo real sejam mapeados em objetos no computador, pressupondo que o mundo é composto por objetos Os sistemas são modelados como um conjunto de objetos que interagem entre si 9

Introdução 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 de abstração do sistema Aumenta qualidade e produtividade oferece maiores facilidades ao desenvolvedor Adoção (aceitação) comercial crescente 10

Introdução 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 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 Estruturada Sequencia Decisão Repetição OO Encapsulamento Herança Polimorfismo 13

Como começar? 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

Orientação a Objetos 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. A classe define as propriedades (atributos) e os comportamentos (métodos) Uma classe define como produzir (instanciar) objetos a partir dela Exemplos Carro, Felinos, Alunos, Professores 15

Orientação a Objetos 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 CLASSE P P3 P2 P1 16

Orientação a Objetos Definição de Objeto Um objeto é uma construção de software que encapsula estado e comportamento, através respectivamente de propriedades (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 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 ou quando uma mensagem é recebida Características São as propriedades que definem um objeto (cor, idade, altura, modelo, marca...) 18

Orientação a Objetos 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 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 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 Mundo Real Características Comportamentos Mundo Virtual Atributos Métodos 22

Orientação a Objetos 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? 23

Orientação a Objetos 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 24

Orientação a Objetos Carro marca modelo ano placa chassi cor corlateral velocidade consumo tipocombustivel movimentar parar acelerar estacionar getvelocidade Atributos Métodos 25

Orientação a Objetos Carro marca modelo ano placa chassi cor corlateral velocidade consumo tipocombustivel movimentar parar acelerar estacionar getvelocidade Atributos Métodos 26

Orientação a Objetos 27

Orientação a Objetos Objetos colaboram através da troca de mensagens A troca de mensagens representa a chamada de um método Freiar 28

Orientação a Objetos Um envio de mensagem sempre possui Seletor de mensagens (método) Parâmetros (opcionais) Freiar Retorno de valor (opcional) Emissor Receptor 29

Resumindo Objeto Método Classe É uma instância que possui dados (características) e métodos (operações ou ações) É uma sub-rotina interna no objeto que informa como executar uma ação É um recipiente para construir objetos. Ela sabe as variáveis que estão no objeto e detém os métodos para cada objeto Mensagem Perguntar a um objeto alguma coisa é chamado de: envio de mensagem. Isto é similar a solicitar uma rotina 30

Resumindo 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 31

BOAS PRÁTICAS 32

Boas práticas 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 33

Boas práticas 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 34

Boas práticas 35

Boas práticas 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 36

Boas práticas Nomes de atributos de classes Iniciar nomes de campos de classes com minúsculas Usar maiúsculas para separar palavras anofabricacao anomodelo numerodias velocidade 37

Boas práticas 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 38

HANDS ON 39

Hands On Rápida explicação 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 40

Hands On Carro id: int marca: String modelo: String ano: int placa: String chassi: String cor: String corlateral: String velocidade: double consumo: double tipocombustivel: String Carro() movimentar(): void parar(): void acelerar(velocidade: double): void estacionar(): void getvelocidade(): double Atributos Métodos 41

Hands On 42

Hands On Construtor Completo 43

Hands on 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 44

Hands on Criar uma classe Jogador conforme Cadastrar pelo menos um time completo (11 jogadores) Um jogador está suspenso pelo 3 cartão amarelo ou quando recebe uma punição (vermelho ou tribunal) Jogador id: int nome: String apelido: String datanascimento: Date numero: int posicao: String qualidade: int cartoes: int suspenso: Boolean Jogador() Jogador(all attrs) verificarcondicaodejogo(): Boolean Ao final, imprimir a lista com todos os jogadores, informando quem está apto para jogar 45

Hands on Criar dois novos métodos na classe Jogador 46 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 18 jogadores observando apenas a qualidade de cada jogador e a suspensão No método main exibir esta escalação DESAFIO Considerar a posição no momento da escalação Time nome: String apelido: String fundacao: Date plantel: ArrayList<Jogador> relacionados: ArrayList<Jogador> Time() Time(all attrs) relacionarjogadores(): ArrayList<Jogador>

Hands on Um desenvolvedor precisa modelar uma classe para mapear os funcionários de uma empresa 47 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 dos métodos (não é necessário implementá-los)

Hands on Criar uma classe de Funcionário com os atributos 48 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 nenhum parâmetro e devolve o imposto pago no decorrer de um ano

Hands On 1 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 as chamadas de objetos para executar as ações Fazer um diagrama de classes no quadro 49

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 50

Hands On 2 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) 51

Hands On 3 (Desafio) 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 52