Gustavo Callou gcallou@gmail.com



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

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

Orientação à Objetos. Aécio Costa

EXERCÍCIOS SOBRE ORIENTAÇÃO A OBJETOS

Análise e Projeto de Sistemas

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

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

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)

INTRODUÇÃO A CLASSES E ORIENTAÇÃO A OBJETOS EM PYTHON. George Gomes Cabral

Programação Orientada a Objetos Classes Abstratas Técnico em Informática. Prof. Marcos André Pisching, M.Sc.

ProgramaTchê Programação OO com PHP

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

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

2 Diagrama de Caso de Uso

Profº. Enrique Pimentel Leite de Oliveira

Técnicas de Programação II

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

Orientação a Objetos

Engenharia de Software III

PROGRAMANDO EM C# ORIENTADO A OBJETOS

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

Programação Orientada a Objetos Herança Técnico em Informática. Prof. Marcos André Pisching, M.Sc.

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

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

Orientação a Objetos

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

Análise e Projeto Orientados por Objetos

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

ARRAYS. Um array é um OBJETO que referencia (aponta) mais de um objeto ou armazena mais de um dado primitivo.

Implementando uma Classe e Criando Objetos a partir dela

Introdução a Java. Hélder Nunes

3. PARADIGMA ORIENTADO A OBJETOS

Capítulo 14. Herança a e Polimorfismo. Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

Padrão Básico de Projeto: Herança versus Composição

Programa do Módulo 2. Fundações do Modelo Objeto

ORIENTAÇÃO A OBJETOS. Professora Lucélia Oliveira

Arquitetura de Rede de Computadores

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

Polimorfismo. Prof. Leonardo Barreto Campos 1

DESENVOLVIMENTO DE SOFTWARE. Introdução ao Visual Studio VB.Net. Programação Estruturada. Prof. Celso Candido ADS / REDES / ENGENHARIA

Status. Barra de Título. Barra de Menu. Barra de. Ferramentas Padrão. Caixa de nomes. Barra de. Ferramentas de Formatação. Indicadores de Coluna

Orientação a Objetos com Java

Programação Orientada a Objetos em Java. Herança

Análise e Projeto Orientados por Objetos

PHP INTRODUÇÃO CLASSES E OBJETOS

Sistemas Distribuídos

Programação Orientada a Objetos em Java

Programação Orientada a Objetos

Programação com acesso a BD. Prof.: Clayton Maciel Costa clayton.maciel@ifrn.edu.br

4. Qual seria o impacto da escolha de uma chave que possua letras repetidas em uma cifra de transposição?

Introdução ao Modelos de Duas Camadas Cliente Servidor

Herança. Alberto Costa Neto DComp - UFS

UNIVERSIDADE FEDERAL DO PARANÁ UFPR Bacharelado em Ciência da Computação

Professor: Macêdo Firmino Disciplina: Sistemas Operacionais de Rede

UML Aspectos de projetos em Diagramas de classes

Bibliografia. Desenvolvimento Orientado a Objetos. Introdução. Bibliografia. O que você vê?

Modelo Entidade-Relacionamento

Diagrama de Classes. Um diagrama de classes descreve a visão estática do sistema em termos de classes e relacionamentos entre as classes.

IFPE. Disciplina: Sistemas Operacionais. Prof. Anderson Luiz Moreira

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

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

Prof. Jhonatan Fernando

Programação Orientada a Objetos (DPADF 0063)

2 Engenharia de Software

UML Unified Modeling Language

Projeto SIGA-EPT. Manual do usuário Módulo Requisição de Almoxarifado SISTEMA INTEGRADO DE GESTÃO ACADÊMICA

SUMÁRIO 1. AULA 6 ENDEREÇAMENTO IP:... 2

Engenharia de software para desenvolvimento com LabVIEW: Validação

NOVIDADES DO JAVA PARA PROGRAMADORES C

Programação de Computadores - I. Profª Beatriz Profº Israel

FUNDAMENTOS DA ORIENTAÇÃO A OBJETOS- REVISÃO

Sumário. Uma visão mais clara da UML

Modelagemde Software Orientadaa Objetos com UML

Computação II Orientação a Objetos

Roteiro do Programa e Entrada/Saída

Manual SAGe Versão 1.2 (a partir da versão )

3 SCS: Sistema de Componentes de Software

Prof. Marcelo Henrique dos Santos

Sistemas Operacionais

Introdução à Programação. Adair Santa Catarina Curso de Ciência da Computação Unioeste Campus de Cascavel PR

Factory Method. Edeyson Andrade Gomes

O Processo Unificado: Captura de requisitos

ROTINAS PADRÕES DO SISTEMAS

CONTRA CONTROLE DE ACESSOS E MODULARIZADOR DE SISTEMAS

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

Tutorial para envio de comunicados e SMS

Reuso com Herança a e Composiçã

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

Disciplina: Unidade III: Prof.: Período:

ICORLI. INSTALAÇÃO, CONFIGURAÇÃO e OPERAÇÃO EM REDES LOCAIS e INTERNET

TUTORIAL PRÁTICO SOBRE Git. Versão 1.1

Desenvolvimento Web TCC Turma A-1 /

Placa Acessório Modem Impacta

3. Explique o motivo pelo qual os protocolos UDP e TCP acrescentam a informação das portas (TSAP) de origem e de destino em seu cabeçalho.

Curso de Java. Orientação a objetos e a Linguagem JAVA. TodososdireitosreservadosKlais

IBM Managed Security Services for Agent Redeployment and Reactivation

Teste de Software. Ricardo Argenton Ramos Engenharia de Software I

UD 4: Sistema de Gerenciamento de Banco de Dados

Transcrição:

Gustavo Callou gcallou@gmail.com 1

Conceitos de Orientação a Objetos Objeto Classe Herança Composição Polimorfismo 2

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

Alan Kay, um dos pais do paradigma da orientação a objetos, formulou a chamada analogia biológica. Como seria um sistema de software que funcionasse como um ser vivo? 4

Cada célula interagiria com outras células através do envio de mensagens para realizar um objetivo comum. Adicionalmente, cada célula se comportaria como uma unidade autônoma. 5

De uma forma mais geral, Kay pensou em como construir um sistema de software a partir de agentes autônomos que interagem entre si. Com isso, ele estabeleceu os princípios da orientação a objetos. 6

Tudo é um objeto. Pense em um objeto como uma super variável: ele armazena dados, mas você também pode fazer requisições a esse objeto, pedindo que ele faça operações sobre si próprio. Em teoria, você pode representar qualquer elemento conceitual no problema que você está tentando resolver (cachorros, livros, sócios, empréstimos, etc.) como um objeto no seu programa. 7

Um programa é uma coleção de objetos dizendo uns aos outros o que fazer. Para fazer uma requisição a um objeto você manda uma mensagem para este objeto. Mais concretamente, você pode pensar em uma mensagem como sendo uma chamada de um procedimento ou função pertencente a um objeto em particular. 8

Um objeto pode ser composto por vários outros objetos Em outras palavras: você pode criar um novo tipo de objeto empacotando objetos existentes. Dessa forma, você pode adicionar complexidade a um programa e escondê-la por trás da simplicidade de uso dos objetos. 9

Todo objeto tem um tipo. Usando as palavras certas, cada objeto é uma instância de uma classe, onde classe é um sinônimo de tipo. A questão mais importante relativa a uma classe é que mensagens eu posso enviar para uma instância dessa classe? 10

Todos os objetos de um dado tipo podem receber as mesmas mensagens. Além disso, uma vez que, por exemplo, um objeto do tipo círculo é também um objeto do tipo forma geométrica, o objeto círculo aceita qualquer mensagem endereçada a uma forma geométrica. Essa capacidade de subtituição de um objeto por outro é um dos mais poderosos conceitos em orientação a objetos. 11

Definição: Um objeto é qualquer coisa, real ou abstrata, sobre a qual armazenamos dados e realizamos operações que manipulam tais dados. Unidade básica de modularização do sistema na obordagem OO. Um objeto é composto por: Atributos características ou propriedades que definem o objeto. Comportamento conjunto de ações pré-definidas (métodos). 12

13

É o mecanismo que nos permite representar uma realidade complexa em termos de um modelo simplificado, de modo que detalhes irrelevantes possam ser suprimidos. Processo de filtragem de detalhes sem importância do objeto, para que apenas as características apropriadas que o descrevem permaneçam. 14

Três abstrações de um carro Officina Placa, conserto, pagamento, etc Consumidor Consumo (Km/l), Manutenção, Conforto Detran Identificação, Impostos, Placa, 15

Para processar algo do mundo real em um computador, temos que extrair as características essenciais. Esses dados que caracterizam o objeto são utilizados na representação no sistema. Um mesmo objeto, pode ser visualizado de formas distintas. Exemplo: Carro para a oficina, para o detran, para o consumidor. 16

Pássaro Identidade: beija-flor Características: cores forma do bico tipo do vôo Comportamento: voar piar 17

Pessoa Identidade: Mário Características: olhos pretos nasceu em 16/02/70 pesa 70kg mede 1,70m Comportamento: andar falar comer rir 18

Telefone Identidade:: número 2576-0989 Características: azul 2.4 GHz tone Comportamento: tocar discar 19

Ônibus Identidade: placa LXY 7684 Características: cor amarela 30 assentos a diesel Comportamento: frear andar correr buzinar acelerar 20

Defina um computador PC segundo os princípios de Orientação a Objetos: 21

A expressão orientada a objetos significa que o aplicativo é organizado como uma coleção de objetos que incorporam tanto a estrutura como o comportamento dos dados. 22

Sistema que informatiza os pedidos de pizza em um restaurante. Objetos: Pedido, Cardápio, Pizza, Caixa, Cliente, Garçom, Cozinheiro, etc 23

Cardápio armazenar os preços e mantê-los atualizados. Pedido processamento dos pedidos feitos pelos clientes. Caixa computa a conta a ser paga pelo Cliente. 24

Utilidade: Exemplo1: Caso houvesse alteração no sistema para atender a necessidade de atualização de preços seria a responsabilidade do cardápio. Assim, os demais objetos não sofreriam alteração Exemplo 2: Caso a forma de calcular a conta fosse modificada (exemplo: gorjeta), o caixa seria refeito. OBS: Cada objeto tem a sua respectiva função 25

Definição: Abstrações utilizadas para representar um conjunto de objetos com características e comportamento idênticos Uma classe pode ser vista como uma fábrica de objetos 26

Tecnicamente falando, objetos são instâncias em tempo de execução de uma classe Todos os objetos são instâncias de alguma classe Todos os objetos de uma classe são idênticos no que diz respeito a sua interface e implementação (o que difere um objeto de outro é seu estado e sua identidade) 27

classe Identidade::o beija-flor que vem ao meu jardim Características: instância da cor das penas: azuis classe (objeto) formato do bico: fino velocidade de vôo: rápida Comportamento: voar piar 28

classe Identidade: Telefone da minha casa Características: marca: Siemens número: 2576-0989 discagem: pulso instância da classe (objeto) Comportamento: tocar discar 29

classe Identidade: Meu celular Características: marca: Nokia número: 99193467 discagem: tom instância da classe (objeto) Comportamento: tocar discar 30

Classe Instâncias (objetos) 31

Descrevem as características 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 identidade 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

Representam o comportamento das instâncias de uma classe Correspondem ao protocolo ou ações das instâncias de uma classe 3000 Funcionário_Helena 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

class ClassName: <statement-1>... <statement-n> 34

class MyClass: '''A simple example class''' i = 12345 def f(self): return ('hello world ) x = MyClass() print (x.f()) 35

>>> class Complex:... def init (self, realpart, imagpart):... self.r = realpart... self.i = imagpart... >>> x = Complex(3.0, -4.5) >>> x.r, x.i (3.0, -4.5) 36

Generalização é um processo que ajuda a identificar as classes principais do sistema. Ao identificar as partes comuns dos objetos, a generalização ajuda a reduzir as redundâncias, e promove a reutilização. O processo inverso a generalização é a especialização. A especialização foca na criação de classes mais individuais. 37

Conta Sobremesa ContaCorrente Poupança Bolo Sorvete ContaEspecial BoloDeChocolate 38

O que é herança? Herdar é derivar precedentes. características de gerações No mundo OO, o termo é associado com uma das formas de reutilização de software. Através da herança, novas classes podem ser derivadas das classes existentes. A nova classe herda propriedades e métodos da classe base. A nova classe também pode adicionar suas próprias propriedades e métodos 39

Para que serve a herança? Que métodos estão disponíveis através de uma referência para a ClasseB (isto é, um objeto)? 40

Suponha agora que a classe ClasseB herda de ClasseA Que métodos estão agora disponíveis para uma referência da ClasseB (um objeto)? 41

Poderoso mecanismo para o reaproveitamento de código. O objeto objb tem agora disponíveis os métodos da ClasseA sem ser necessário reescrevê-los na ClasseB. 42

Um objeto da ClasseB também é um objeto da ClasseA. Facilita a manutenção do código: Os métodos não são replicados. Se for necessário alterar o código do método m3, basta alterá-lo em ClasseA. ClasseB pode "recusar" parte da herança reimplementando os métodos herdados 43

Exemplo: Superclasse (características comuns) Subclasses (características específicas) 44

class DerivedClassName(BaseClassName): <statement-1>... <statement-n> 45

class DerivedClassName(Base1, Base2, Base3): <statement-1>... <statement-n> 46

Na terminologia da orientação a objetos, dizse que um objeto possui uma interface. A interface de um objeto é o que ele conhece e o que ele sabe fazer, sem descrever como o objeto conhece ou faz. A interface de um objeto define os serviços que ele pode realizar e conseqüentemente as mensagens que ele recebe. 47

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 e terminados por um sublinhado são privados e todas as outras formas são públicas. 48

class A: a = 1 # atributo publico b = 2 # atributo privado a class A class B(A): c = 3 # atributo privado a B def init (self): print self.a print self. c a = A() print a.a # imprime 1 b = B() print b. b # Erro, pois b é privado a classe A. print b. c # Erro, c é um atributo privado, somente chamado pela classe. print b._b c # Imprime c = 3, muito pouco utilizada, mas existe. 49

Um módulo é o arquivo de código fonte propriamente dito (arquivo com extensão.py). Um módulo pode conter vários objetos, como classes, funções e variáveis. A importação desses objetos por outro módulo pode ser feita de duas maneiras: from nome_modulo import nome_objeto Para acessar o objeto precisamos apenas digitar o nome do objeto. Exemplo: x = nome_objeto() from nome_modulo import * importa todos os objetos do módulo. Para acessar um objeto do módulo precisamos digitar o nome do módulo antes. Ex.: x = nome_modulo.nome_objeto() 50

O construtor de uma classe é um método responsável por inicializar uma nova instância dessa classe (criar um objeto). Se ele não for definido o Python atribui a essa classe um construtor vazio (usado apenas para criar os objetos). Exemplo: class Pessoa: def init (self, nome, idade, genero): # O construtor recebe 3 parâmetros self.nome = nome # o atributo nome da instancia que está sendo criada # recebe o valor do parâmetro nome, e assim por diante... self.idade = idade self.genero = genero A classe pessoa tem três atributos (variáveis) que representam o estado de uma pessoa 51

Para a classe pessoa, a criação de uma nova instância deve ser da seguinte forma: x = Pessoa( Augusta, 23, F ) y = Pessoa( Fábio, 30, M ) x é uma instância (objeto) da classe Pessoa que tem nome Augusta, idade 23 e gênero F. y é uma outra instância (objeto) da classe Pessoa que tem nome Fábio, idade 30 e gênero M. 52

Significa que a mesma operação pode ter implementações distintas. Exemplo: Uma subclasse pode sobrepor a implementação de uma operação que ela herda de uma superclasse. Somente pode ser usado com a herança. 53

Ocorre quando um classe possui um método com o mesmo nome e assinatura (paramêtros) de um método da superclasse. Classe B operação m1() Classe A método invocado A.m1() operação m1() m2() método invocado B.m1() A.m2() m2() A.m2() m3() B.m3() 54

#a.py class A: a = 1 b = 2 def calcular(self): return (self.a+self.b) #b.py from a import A class B(A): pass #c.py from a import A from b import B a = A() print (a.calcular()) # saída =? b = B() print (b.calcular()) # saída =? 55

#a.py class A: a = 1 b = 2 def calcular(self): return (self.a+self.b) #b.py from a import A class B(A): pass #c.py from a import A from b import B a = A() print (a.calcular()) # imprime 3 b = B() print (b.calcular()) # imprime 3 56

#a.py class A: a = 1 b = 2 def calcular(self): return (self.a+self.b) #b.py from a import A class B(A): def calcular(self): return (self.a*self.b) #c.py from a import A from b import B a = A() print (a.calcular()) # saída =? Polimorfismo b = B() print (b.calcular()) # saída =? 57

#a.py class A: a = 1 b = 2 def calcular(self): return (self.a+self.b) #b.py from a import A class B(A): def calcular(self): return (self.a*self.b) #c.py from a import A from b import B a = A() print (a.calcular()) # saída = 3 Polimorfismo b = B() print (b.calcular()) # saída = 2 58

1)Descreva o que os objetos têm em comum: a) bicicleta, carro, caminhão, avião, motocicleta b) prego, parafuso, pino c) tenda, caverna, barraco, celeiro, casa 2)Identifique classes nos seguintes sistemas: Obs.: Instancie alguns objetos. a. Esta sala de aula; b. Um sistema de transporte urbano; c. Um ecossistema; d. Um sistema de estacionamento de veículos e. Um sistema aéreo 3)Classes possuem propriedade (atributos). Identifique propriedades pertencentes à classe PESSOA nos seguintes sistemas: a. Um sistema de controle de notas e freqüências ; b. Um sistema de registro civil; c. Um sistema de correio. 59

4 Pensando em um sistema de controle para um banco que possui dois tipos de conta: conta simples (conta corrente) e conta poupança. Defina em termos de OO como podemos representar tal sistema (classes/atributos/métodos). 5 Faça o programa da questão anterior. 60