Python Orientação a Objetos Parte 1. Introdução à Programação SI1

Documentos relacionados
Python Orientação a Objetos Parte 1. Introdução à Programação SI1

Python Orientação a Objetos. Introdução à Programação SI2

Gustavo Callou

Tema 1: Modelo Estático

Orientação à Objetos. Aécio Costa

Programação Orientada a Objeto

ProgramaTchê Programação OO com PHP

Introdução ao Paradigma Orientado a Objetos. Principais conceitos

Implementando uma Classe e Criando Objetos a partir dela

Análise e Desenvolvimento de Sistemas ADS Programação Orientada a Obejeto POO 3º Semestre AULA 03 - INTRODUÇÃO À PROGRAMAÇÃO ORIENTADA A OBJETO (POO)

MAB224 Programação de Computadores II. Prof. Franklin Marquezino Universidade Federal do Rio de Janeiro

Programação Orientada a Objetos

Análise e Projeto Orientados por Objetos

Python Intermediário. terça-feira, 4 de agosto de 15

Computação II Orientação a Objetos

PROGRAMAÇÃO OO DIAGRAMA DE CLASSES. Engenheiro Anilton S. Fernandes (asfernandes.com) Janeiro 2012

ESTENDENDO A UML PARA REPRESENTAR RESTRIÇÕES DE INTEGRIDADE

UML: Diagrama de Casos de Uso, Diagrama de Classes

Orientação a Objetos com Java

O modelo Entidade-Relacionamento. Agenda: -Modelagem de dados utilizando O Modelo Entidade-Relacionamento

Resolvendo problemas com logaritmos

PROGRAMAÇÃO ORIENTADA A OBJETO EM PHP

UM ESTUDO PARA A EVOLUÇÃO DO PHP COM A LINGUAGEM ORIENTADA A OBJETOS

Prof. Jhonatan Fernando

Parte I. Orientação a objetos no PHP. Contato: <lara.popov@ifsc.edu.br> Site:

Modelagem com UML. Fabio Perez Marzullo. IEEE Body of Knowledge on Services Computing Committee on Services Computing, IEEE Computer Society

EXERCÍCIOS SOBRE ORIENTAÇÃO A OBJETOS

Programação Estruturada e Orientada a Objetos. Fundamentos Orientação a Objetos

Técnicas de Programação Avançada TCC Profs.: Anselmo Montenegro Conteúdo: Introdução à Orientação a Objetos

Conceitos básicos da linguagem C

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

4.1. UML Diagramas de casos de uso

Exercícios de Revisão Java Básico

Programação Orientada a Objetos. Prof. Diemesleno Souza Carvalho diemesleno@iftm.edu.br

AULA 4 VISÃO BÁSICA DE CLASSES EM PHP

2 Ferramentas Utilizadas

Análise e Projeto Orientados a Objeto

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

Material de Apoio 5. int getres() { return res; O que estas classes possuem em comum? 1) 2) 3)

- Aulas 57, 58, 59 e 60 - Técnicas de programação. Funções

Dados. Qualquer elemento (aspecto, fato, medida etc.) representativo, disponível e coletável na realidade. fatos no estado bruto, conforme Platão;

Exemplo: Na figura 1, abaixo, temos: Clique aqui para continuar, que é a primeira atividade que você precisa realizar para iniciar seus estudos.

ATRIBUTOS PRIVADOS 6. ENCAPSULAMENTO MÉTODOS PRIVADOS MÉTODOS PRIVADOS

Prova de Java. 1) Copie o programa abaixo no eclipse e complete-o, utilizando os conceitos aprendidos durante o curso. (4 pontos)

Orientação a Objetos

Programação Orientada a Objetos (DPADF 0063)

Linguagem de Programação I. Orientação a Objetos em Java

Criar um formulário do tipo Diálogo modal ; Alterar a cor de fundo de um formulário; Inserir botões de comando e caixas de texto;

Desenvolvimento OO com Java Orientação a objetos básica

Influenciam nossa percepção; ajudam-nos a organizar e a coordenar a Classes estimulam projeto centrado em dados:

MODELAGEM VISUAL DE OBJETOS COM UML DIAGRAMA DE CLASSES.

Engenharia de Software Engenharia de Requisitos. Análise Orientada a Objetos Prof. Edison A M Morais prof@edison.eti.

Especificação do Trabalho

04/07/2015 UML. Prof. Esp. Fabiano Taguchi DEFINIÇÃO DE REQUSIITOS

Guia de utilização da notação BPMN

Agenda Semântica. Grupo: Francisco Rodrigues Júnior Guilherme Daher Ferreira Luana Vieira Morellato Renan Rigo

Programação Orientada a Objetos e Java - Introdução. Carlos Lopes

Para desenvolver a atividade a atividade desta aula utilizaremos o ambiente de desenvolvimento integrado NetBeans.

RESOLUÇÃO PROVA TJ PR

Curso: Diagnóstico Comunitário Participativo.

Usando o do-file editor Automatizando o Stata

INTRODUÇÃO À ENGENHARIA

COMO FUNCIONA NOSSA CONSULTORIA DE MARKETING DIGITAL ESPECIALIZADA EM VENDAS ONLINE

Orientação a Objetos. Thiago Messias Evangelista UESC Universidade Estadual de Santa Cruz Version LibreOffice Productivity Suite

Introdução a Java. Hélder Nunes

Sistemas Operacionais. Prof. André Y. Kusumoto

Prof. Claudio Passos Apresentação cedida pela Ceça Moraes

MATERIAL DE APRESENTAÇÃO DO SCRATCH

Capítulo 8. Introdução UML

Disciplina Técnicas de Modelagem

PROBLEMA É IMPLEMENTAR LEGISLAÇÃO

PESQUISA EM INFORMÁTICA -ESTILOS DE PESQUISA EM COMPUTAÇÃO. Prof. Angelo Augusto Frozza, M.Sc.

OBI2012 Caderno de Tarefas

Resolução da lista de exercícios de casos de uso

Programação Orientada a Objetos Prof. Rone Ilídio UFSJ/CAP

REDES DE COMPUTADORES E TELECOMUNICAÇÕES MÓDULO 1

Conteúdo. Apostilas OBJETIVA - Ano X - Concurso Público 2015

Modelo Ambiental: Define as fronteiras entre o sistema e o resto do mundo.

Equipe OC- Olimpíadas Científicas

CEDERJ - CENTRO DE EDUCAÇÃO SUPERIOR A DISTÂNCIA DO ESTADO DO RIO DE JANEIRO

PROGRAMAÇÃO AVANÇADA -CONCEITOS DE ORIENTAÇÃO A OBJETOS. Prof. Angelo Augusto Frozza, M.Sc. frozza@ifc-camboriu.edu.br

Perfil Chefe de Transporte

Curso de PHP. FATEC - Jundiaí. A programação orientada a objetos (object-oriented oriented programming

PCS LABORATÓRIO DE PROGRAMAÇÃO ORIENTADA A OBJETOS PARA A ENGENHARIA ELÉTRICA

UNIVERSIDADE FEDERAL DO AMAPÁ PRÓ REITORIA DE ADMINISTRAÇÃO E PLANEJAMENTO DEPARTAMENTO DE INFORMÁTICA. Manual do Moodle- Sala virtual

Algoritmo Iterativo. Dilema do Martelo x Edifício. O Martelo. O Edifício 01/06/2014. Dilema das ações x declarações

Atividade Proporcionalidade (vídeo)

UML & Padrões Aula 3. UML e Padrões - Profª Kelly Christine C. Silva

Algoritmos e programação

CONCEITOS BÁSICOS PARA A CONSTRUÇÃO DE ALGORITMOS PARA COMPUTADORES. Isac Aguiar isacaguiar.com.br isacaguiar@gmail.com

MAPEAMENTO OBJETO RELACIONAL: UM ESTUDO DE CASO

Programação em papel quadriculado

Módulo Frações, o Primeiro Contato. 6 o ano/e.f.

SOCIEDADE ASTRONÔMICA BRASILEIRA SAB VII Olimpíada Brasileira de Astronomia VII OBA Gabarito do nível 2 (para alunos da 3ª à 4ª série)

Nível de Ensino: Componente Curricular: Matemática. Tema: Duração da Aula: Modalidade de Ensino:

QUESTÃO 16 A figura abaixo exibe um retângulo ABCD decomposto em quatro quadrados.

NOME: Nº. ASSUNTO: Recuperação Final - 1a.lista de exercícios VALOR: 13,0 NOTA:

A origem dos filósofos e suas filosofias

O que é coleta de dados?

N1Q1 Solução. a) Há várias formas de se cobrir o tabuleiro usando somente peças do tipo A; a figura mostra duas delas.

Transcrição:

Python Orientação a Objetos Parte 1 Introdução à Programação SI1

Conteúdo Orientação a objetos Objeto Classe Herança Encapsulamento Polimorfismo 2

Motivação Realidade Atual Sistemas de alta complexidade Sistemas maiores, mais complexos e mais voláteis A mudança para alcançar a qualidade e produfvidade está na 3

ReuFlização

Paradigma OO Um paradigma é uma forma de abordar um problema O paradigma da orientação a objetos surgiu no fim dos anos 60 Hoje em dia, prafcamente suplantou o paradigma anterior, o paradigma estruturado... 5

Paradigma OO Um paradigma é uma forma de abordar um problema Alan Kay, um dos pais do paradigma da orientação a objetos, formulou a chamada analogia biológica Como seria um sistema de so=ware que funcionasse como um ser vivo? 6

Paradigma OO Cada célula interage com outras células através do envio de mensagens para realizar um objefvo comum Cada célula se comporta como uma unidade autônoma De uma forma mais geral, Kay pensou em como construir um sistema de so=ware a parfr de agentes autônomos que interagem entre si Com isso, estabeleceu os princípios da orientação a objetos 7

Análise e Programação OO Análise orientada a objetos Programação orientada a objetos Consiste em uflizar objetos computacionais para implementar as funcionalidades de um sistema. 8

Princípios OO Tudo é um objeto! 9

Objetos EnFdades que possuem dados e instruções sobre como manipular estes dados. Estão ligados à solução do problema. 10

Modelagem de Objetos SoYware Gráfico Objetos: Círculos, Linhas, etc. SoYware BD Objetos: Tabelas, Linhas, Campos, etc. SoYware Comercial Objetos: Pedidos, Produtos, Clientes. 11

Princípios OO Tudo é um objeto Pense em um objeto como uma super variável: O objeto armazena dados, também pode-se fazer requisições a esse objeto, pedindo que ele execute operações Elementos conceituais no problema que você está tentando resolver (cachorros, livros, sócios, emprésfmos, etc.) como um objeto de um programa 12

Exemplo >>> s = "quem parte e reparte, fica com a maior parte" (" s.find("parte <<< 5 13

Princípios OO Um programa é uma coleção de objetos dizendo uns aos outros o que fazer Para fazer uma requisição a um objeto envia-se uma mensagem para este objeto Uma mensagem é uma chamada de um método pertencente a um objeto em parfcular 14

Princípios OO Todo objeto tem um Kpo Cada objeto é uma instância de uma classe, onde a classe define um Fpo Classe professor, objeto Jones 15

Classes Podemos descrever o cachorro Bilú em termos de seus atributos fsicos: é pequeno sua cor principal é castanha olhos pretos orelhas pequenas e caídas, rabo pequeno 16

Classes Podemos também descrever algumas ações que ele faz (temos aqui os métodos): balança o rabo foge e se deita quando leva reclamação late quando ouve um barulho ou vê um cão ou gato atende quando o chamamos pelo seu nome 17

Classes Representação do cachorro Bilú: Propriedades : [Cor do corpo : castanha; cor dos olhos : pretos; altura: 15 cm; comprimento: 38 cm largura : 24 cm] Métodos : [balançar o rabo, lafr, correr, deitar, sentar ] 18

Representação de Classe Atributos Métodos Cachorro cor: str corolhos: str altura: float comprimento: float peso: float lafr() correr() sentar() comer() 19

Classe e Objetos Cachorro cor: str corolhos: str altura: float comprimento: float peso: float lafr() correr() sentar() comer() 20

Objeto Um objeto é qualquer coisa, real ou abstrata, sobre a qual armazenamos dados e realizamos operações que manipulam tais dados Pertencem a classes Unidade básica de modularização de um sistema OO Um objeto de uma classe possui: Atributosà caracterísfcas ou propriedades que definem o objeto. Comportamentoà conjunto de ações pré-definidas (métodos) 21

Objetos - Exemplos Pássaro CaracterísKcas: cores forma do bico Fpo do vôo Comportamento: voar() piar() Pessoa CaracterísKcas: cor dos olhos: azuis data nascimento: 16/02/70 peso: 70kg altura: 1,70m Comportamento: andar falar comer rir 22

Exemplo Telefone CaracterísKcas: cor:azul discagem: tone Comportamento: tocar() discar() 23

Exemplo Ônibus CaracterísKcas: cor: amarela qtdassentos: 30 combusfvel: diesel Comportamento: frear andar correr buzinar acelerar 24

OO Em resumo, a expressão orientada a objetos significa que o aplicafvo é organizado como uma coleção de objetos que incorporam tanto a estrutura como o comportamento dos dados Objetos pertencem à classes 25

Classe Abstrações uflizadas para representar um conjunto de objetos com caracterís(cas e comportamento idên(cos Uma classe pode ser vista como uma fábrica de objetos 26

Classe Objetos são instâncias de uma classe Todos os objetos são instâncias de alguma classe Todos os objetos de uma classe são idênkcos no que diz respeito a sua interface e implementação o que difere um objeto de outro é seu estado e sua idenkdade 27

classe Classe - Exemplo instância da classe (objeto) CaracterísKcas: corpenas: azuis formatobico: fino velocidadevoo: rápida Comportamento: voar piar 28

Classe - Exemplo classe CaracterísKcas: marca: Siemens número: 2576-0989 discagem: pulso Comportamento: tocar discar instância da classe (objeto) 29

Classe - classe Exemplo CaracterísKcas: marca: Nokia número: 99193467 discagem: tom Comportamento: tocar discar instância da classe (objeto) 30

Classes Classe Instâncias (objetos) 31

Classe - Atributos Descrevem as caracterískcas das instâncias de uma classe Seus valores definem o estado do objeto O estado de um objeto pode mudar ao longo de sua existência A idenfdade de um objeto, contudo, nunca muda Funcionário_Helena Nome=Helena Reis Nasc=28/01/1965 Salário = 4.000 InformarSalário CalcularIdade Funcionário_Mário Nome=Mário Sá Nasc=16/02/1970 Salário = 3.000 InformarSalário CalcularIdade 32

Classe - Operações Representam o comportamento das instâncias de uma classe Correspondem às ações das instâncias de uma classe Funcionário_Helena 3000 Nome=Helena Reis Nasc=28/01/1965 Salário = 4.000 Informar Salário? InformarSalário CalcularIdade 4000 Funcionário_Mário Nome=Mário Sá Nasc=16/02/1970 Salário = 3.000 InformarSalário CalcularIdade 33

34

Classe em Python A maneira mais simples é: class nomeclasse: var = valor... var = valor def metodo (self,... arg):... def metodo (self,... arg):... 35

Classe em Python Os métodos sempre têm self como primeiro argumento self se refere a uma instância da classe Uma nova instância da classe é criada usando nomeclasse() 36

Classe em Python As variáveis e os métodos são escritos precedidos pelo nome da classe e por um ponto (.) A variavel v definida numa classe C é escrita C.v Os métodos sempre têm self como primeiro argumento self se refere a uma instância da classe Uma nova instância da classe é criada usando nomeclasse() 37

Construtores O método inicia foi usado para inicializar atributos e é conhecido como construtor da classe Python suporta construtores que podem ser chamados automakcamente na criação de instâncias Basta definir na classe um método chamado init Este método é chamado automakcamente durante a criação de um nova instância da classe, sendo que os argumentos são passados entre parênteses após o nome da classe 38

Atributos Um atributo attr associado a uma instância obj tem nome obj.attr Se queremos nos referir a um atributo attr de um objeto dentro da própria classe, usamos o nome self.attr 39

Exemplo >>> class Exemplo: def init (self,a=2,b=3): self.a = a self.b = b def f(self,x): return self.a*x+self.b >>> obj1 = Exemplo() >>> obj1.a 2 >>> obj1.b 3 >>> obj2 = Exemplo(8,1) >>> obj2.b 1 ( obj1.f(7 <<< 17 ( obj2.f(7 <<< 57 40

Exemplo >>> class Retangulo: lado_a = None lado_b = None def init (self, lado_a, lado_b): self.lado_a = lado_a self.lado_b = lado_b print "Criada uma nova instância Retangulo def calcula_area(self): return self.lado_a * self.lado_b def calcula_perimetro(self): return 2 * self.lado_a + 2 * self.lado_b 41

Exemplo >>> obj = Retangulo(4,6) Criada uma nova instancia Retangulo >>> obj.lado_a 4 >>> obj.lado_b 6 >>> obj.calcula_area() 24 >> obj.calcula_perimetro() 20 42

Exemplo >>> class ContaCorrente: def init (self, numero): self.numero = numero self.saldo = 0.0 def debitar(self, valor): self.saldo = self.saldo valor def creditar(self, valor): self.saldo = self.saldo + valor 43

Exemplo >>> c = ContaCorrente("1234") >>> c.saldo 0.0 >>> c.creditar(1000) >>> c.saldo 1000.0 >>> c.debitar(342) >>> print(c.numero, c.saldo) 1234 658.0 44

Classe Exemplo 1 45

Classe Exemplo 2 46

Classe Exemplo 3 47

Encapsulamento Na terminologia da orientação a objetos, dizse que um objeto possui uma interface. A interface de um objeto é como ele aparece para os demais objetos: Suas caracterísfcas, sem detalhes internos A interface de um objeto define os serviços que ele pode realizar e conseqüentemente as mensagens que ele recebe Um objeto é visto através de seus métodos 48

Encapsulamento Encapsulamento é a proteção dos atributos ou métodos de uma classe. Em Python existem somente o public e o private e eles são definidos no próprio nome do atributo ou método. Atributos ou métodos iniciados por no máximo dois sublinhados (underline) são privados e todas as outras formas são públicas 49

Exemplo class Teste1: a = 1 # atributo publico b = 2 # atributo privado da classe Teste1 class Teste2(Teste1): c = 3 # atributo privado da classe Teste2 def init (self): print self.a print self. c >>> t1 = Teste1() >>> print(t1.a) 1 >>> t2 = Teste2() 1 3 >>> print(t2. b) # Erro, pois b é privado a classe A. >>> print(t2. c) # Erro, c é um atributo privado, somente acessado pela classe

EXERCÍCIOS 51

Exercícios 1. Classe Triangulo: Crie uma classe que modele um triangulo: Atributos: LadoA, LadoB, LadoC Métodos: calcular Perímetro, getmaiorlado; Crie um programa que uflize esta classe. Ele deve pedir ao usuário que informe as medidas de um triangulo. Depois, deve criar um objeto com as medidas e imprimir sua área e maior lado. 52

Exercícios 2. Classe Funcionário: Implemente a classe Funcionário. Um funcionário tem um nome e um salário. Escreva um construtor com dois parâmetros (nome e salário) e o método aumentarsalario (porcentualdeaumento) que aumente o salário do funcionário em uma certa porcentagem. Exemplo de uso: harry=funcionário("harry",25000) harry.aumentarsalario(10) Faca um programa que teste o método da classe. 53

3. Crie uma classe Livro que possui os atributos nome, qtdpaginas, autor e preço. Crie os métodos getpreco para obter o valor do preco e o método setpreco para setar um novo valor do preco. Crie um codigo de teste 54

Exercício 4. Implemente uma classe Aluno, que deve ter os seguintes atributos: nome, curso, temposemdormir (em horas). Essa classe deverá ter os seguintes métodos: estudar (que recebe como parâmetro a qtd de horas de estudo e acrescenta temposemdormir ) Dormir (que recebe como parâmetro a qtd de horas de sono e reduz temposemdormir ) Crie um código de teste da classe, criando um objeto da classe aluno e usando os métodos estudar e dormir. Ao final imprima quanto tempo o aluno está sem dormir 55

Exercícios 5. Classe carro: Implemente uma classe chamada Carro com as seguintes propriedades: Um veículo tem um certo consumo de combus}vel (medidos em km / litro) e uma certa quanfdade de combus}vel no tanque. O consumo é especificado no construtor e o nível de combus}vel inicial é 0. Forneça um método andar( ) que simule o ato de dirigir o veículo por uma certa distância, reduzindo o nível de combus}vel no tanque de gasolina. Esse método recebe como parâmetro a distância em km. Forneça um método obtergasolina( ), que retorna o nível atual de combus}vel. Forneça um método adicionargasolina( ), para abastecer o tanque. Faça um programa para testar a classe Carro. Exemplo de uso: meufusca = Carro(15); # 15 quilômetros por litro de combus}vel. meufusca.adicionargasolina(20); # abastece com 20 litros de combus}vel. meufusca.andar(100); # anda 100 quilômetros. meufusca.obtergasolina() # Imprime o combus}vel que resta no tanque. 56

Exercícios 6. Crie uma classe Aluno, que possui como atributo um nome e cpf. Crie outra classe chamada Equipe, que possui como atributo uma lista de parfcipantes do Fpo Aluno e outro atributo chamado projeto. Crie uma terceira classe chamada GerenciadorEquipes. Essa classe possui como atributo uma lista de todas as equipes formadas. Ela deverá possuir o método criarequipe, que recebe uma lista de alunos de uma equipe e diz se a equipe pode ser formada ou não. Caso não haja nenhum aluno da equipe a ser formada em uma outra equipe com o mesmo projeto, então a equipe é criada e acrescentada à lista. Caso contrário é informada que a equipe não pode ser criada. 57

Bibliografia n Livro Como pensar como um CienFsta de Computação usando Python Capítulo 12 n h p://pensarpython.incubadora.fapesp.br/portal n Python Tutorial n h p://www.python.org/doc/current/tut/tut.html n Dive into Python n h p://www.diveintopython.org/ n Python Brasil n h p://www.pythonbrasil.com.br/moin.cgi/ DocumentacaoPython#head5a7ba2746c5191e770383 0e02d0f5328346bcaac 58