Programação Orientada a Objeto Prof. Esp. Thiago S F Carvalho Faculdades Integradas de Diamantino 2016 Caravalho, T.S.F. (FID) POO 2016 1 / 44
Breve revisão Conteúdo 1 Breve revisão 2 Mais sobre classes 3 Especicação de Sistemas OO Unied Modeling Language Diagrama de Classes 4 Python O Básico Estruturas de controle Funções em Python Caravalho, T.S.F. (FID) POO 2016 2 / 44
Breve revisão Orientação a Objeto É uma forma de entender e representar sistemas complexos como estrutras hierárquicas de objetos que tem relação entre si. Caravalho, T.S.F. (FID) POO 2016 3 / 44
Breve revisão Classes Objetos similares (em estrutura de dados - atributos / comportamento - operações/métodos) Dizemos que o objeto é uma instância da classe Diferenciam-se: valor das propriedades e identicadores Caravalho, T.S.F. (FID) POO 2016 4 / 44
Breve revisão Encapsulamento Guardar ("esconder") na classe os detalhes da implementação através da restrição de acesso a atributos e métodos. Caravalho, T.S.F. (FID) POO 2016 5 / 44
Breve revisão Operações/Métodos O que é domínio daquela classe? Uma classe Produto: fornecer o valor do produto, a quantidade em estoque, calcular preço, desconto... Uma classe ContaCorrente: fornecer o saldo, o valor do limite, calcular juros, atualizar o saldo... Caravalho, T.S.F. (FID) POO 2016 6 / 44
Breve revisão Atributos Não possuem comportamento Nomes devem ser substantivos simples ou frase substantiva Devem ser únicos na classe Caravalho, T.S.F. (FID) POO 2016 7 / 44
Breve revisão Operações/Métodos O nome das operações deve indicar o seu resultado: calcularsaldo() obterquantidadeestoque() obternome() Atenção! Os nomes devem ser dados do ponto de vista do fornecedor. Caravalho, T.S.F. (FID) POO 2016 8 / 44
Mais sobre classes Conteúdo 1 Breve revisão 2 Mais sobre classes 3 Especicação de Sistemas OO Unied Modeling Language Diagrama de Classes 4 Python O Básico Estruturas de controle Funções em Python Caravalho, T.S.F. (FID) POO 2016 9 / 44
Mais sobre classes Abstração Um programa em linguagem OO é um conjunto de objetos dizendo uns para os outros o que fazer por meio do envio de mensagens. Cada objeto é a instância de uma classe Possui espaço de memória próprio A chamada de função pode ser usada para enviar mensagem a outro objeto Caravalho, T.S.F. (FID) POO 2016 10 / 44
Mais sobre classes Mais sobre Objetos Como instâncias de uma mesma classe, os objetos possuem coisas em comum: 1 Se tenho uma classe conta, os objetos dessa classe terão por exemplo, um número, uma data de abertura, um extrato,... 2 Porém, cada objeto criado tem um estado diferente: cada conta tem um número diferente, uma data de abetura diferente, um extrato diferente... Caravalho, T.S.F. (FID) POO 2016 11 / 44
Mais sobre classes Cada objeto pertence a uma classe, que dene o seu comportamento e sua características. Caravalho, T.S.F. (FID) POO 2016 12 / 44
Mais sobre classes Interface 1 Cada objeto possui métodos para alguma atividade 2 Cada objeto pode responder a determinadas requisições 3 O conjunto de métodos de um objeto é conhecido com interface. Caravalho, T.S.F. (FID) POO 2016 13 / 44
Mais sobre classes Inicializar : Construtor O construtor é um método especial denido na classe e que é chamado na instaciação desta (objeto), responsável por exemplo por: Inicializar atributos no momento Executar outros métodos/operações Caravalho, T.S.F. (FID) POO 2016 14 / 44
Especicação de Sistemas OO Conteúdo 1 Breve revisão 2 Mais sobre classes 3 Especicação de Sistemas OO Unied Modeling Language Diagrama de Classes 4 Python O Básico Estruturas de controle Funções em Python Caravalho, T.S.F. (FID) POO 2016 15 / 44
Especicação de Sistemas OO Especicação de Sistemas OO Nosso objetivo é conhecer a linguagem utilizada para modelar sistemas orientados a objeto. Iremos nos concentrar no Diagrama de Classes, artefato que pretendemos utilizar durante todo o curso. Caravalho, T.S.F. (FID) POO 2016 16 / 44
Especicação de Sistemas OO Unied Modeling Language UML UML é uma linguagem visual para especicação (modelagem) de sistemas orientados a objeto. A UML privilegia a descrição de um sistema seguindo três perspectivas: 1 Os diagramas de classes - (Dados estruturais); 2 Os diagramas de casos de uso (Operações funcionais); 3 Os diagramas de seqüência, atividades e transição de Estados (Eventos temporais). Caravalho, T.S.F. (FID) POO 2016 17 / 44
Especicação de Sistemas OO Unied Modeling Language Unicada A UML nos permite: 1 visualização 2 especicação 3 construção 4 documentação de softwares orientados a objeto. Caravalho, T.S.F. (FID) POO 2016 18 / 44
Especicação de Sistemas OO Unied Modeling Language Unicada Pense na UML como uma planta baixa (ou projeto arquitetônico): Caravalho, T.S.F. (FID) POO 2016 19 / 44
Especicação de Sistemas OO Unied Modeling Language Unicada Pense na UML como uma planta baixa (ou projeto arquitetônico): Caravalho, T.S.F. (FID) POO 2016 19 / 44
Especicação de Sistemas OO Unied Modeling Language Vantagens Algumas das vantagens da linguagem: 1 Padronizar a escrita e representação dos componentes e funcionamento do sistema 2 Permite visualiar a arquitetura do sistema 3 Demonstra claramente as funcionalidades 4 Permite mostrar a estrutura e comportamento esperado do sistema Caravalho, T.S.F. (FID) POO 2016 20 / 44
Especicação de Sistemas OO Diagrama de Classes Diagrama de Classes Porque utilizaremos o Diagrama de Classes: 1 Permite modelar as abstrações que fazem parte do sistema 2 Modela as interações entre os elementos 3 Modela a lógica dos dados manipulados pelo sistema Caravalho, T.S.F. (FID) POO 2016 21 / 44
Especicação de Sistemas OO Diagrama de Classes Notação para Classe Caravalho, T.S.F. (FID) POO 2016 22 / 44
Especicação de Sistemas OO Diagrama de Classes Notação para Classe Especicação do acesso: public + private - protected # Caravalho, T.S.F. (FID) POO 2016 23 / 44
Especicação de Sistemas OO Diagrama de Classes Relacionamentos Podem ser: 1 dependência 2 generalização 3 associação Caravalho, T.S.F. (FID) POO 2016 24 / 44
Especicação de Sistemas OO Diagrama de Classes Dependência Quando uma classe usa a outra, por exemplo. A alteração em uma classe afeta a outra. Caravalho, T.S.F. (FID) POO 2016 25 / 44
Especicação de Sistemas OO Diagrama de Classes Generalização Quando uma (sub)classe é uma especialidade de outra (superclasse). A alteração na superclasse é herdade por suas lhas. Caravalho, T.S.F. (FID) POO 2016 26 / 44
Especicação de Sistemas OO Diagrama de Classes Associação Indica que determinados objetos possuem uma ligação (estrutural). A associação é chamada de link. Caravalho, T.S.F. (FID) POO 2016 27 / 44
Especicação de Sistemas OO Diagrama de Classes Exercício Represente, utilizando UML, os seguintes objetos denindo atributos e métodos: 1 Tv 2 Pessoa 3 Cliente 4 Computador Caravalho, T.S.F. (FID) POO 2016 28 / 44
Python Conteúdo 1 Breve revisão 2 Mais sobre classes 3 Especicação de Sistemas OO Unied Modeling Language Diagrama de Classes 4 Python O Básico Estruturas de controle Funções em Python Caravalho, T.S.F. (FID) POO 2016 29 / 44
Python Python: Por que? Linguagem de alto nível Fácil para aprender Livre e funciona em qualquer S.O. Suporta programação procedural e programação OO Diversos recursos para aprendê-la de graça... Caravalho, T.S.F. (FID) POO 2016 30 / 44
Python Interpretar x Compilar Intepretador: o código é "traduzido"sempre o que o programa é executado Compilador: o código é "traduzido"uma única vez para linguagem de máquina Caravalho, T.S.F. (FID) POO 2016 31 / 44
Python Método híbrido Python utiliza um método híbrido para execução do código. Caravalho, T.S.F. (FID) POO 2016 32 / 44
Python O Básico Tipos de Dados Básicos Inteiro (int) 1 33 99 1000-1000000 Ponto Flutuante (oat) 1.02-0.299 Texto (str) "Oi, tudo bem?"'novidade' "1.99" Caravalho, T.S.F. (FID) POO 2016 33 / 44
Python O Básico Variáveis Símbolos que representaram na linguagem alguma quantidade ou propriedade Obrigatoriamente começam por letras, podendo conter números e sublinha Não podem ser palavras reservadas da linguagem (gerará um erro) Podem ter acentos (embora não aconselhável) Não podem ter espaços ou tabulações Alguns nomes válidos: minhanota, meucarro2, var 1, var 2, var _3(...) Caravalho, T.S.F. (FID) POO 2016 34 / 44
Python O Básico Atribuir valor Utilize o símbolo ( = ): var1 = 1.2 Você poderá então usar essa variável em calculos por exemplo... var1 = 1.2 var1 * 2 2.4 Caravalho, T.S.F. (FID) POO 2016 35 / 44
Python O Básico Exercício Um simples exercício em python: Execute os comandos abaixo e verique o que acontece com o valor das variáveis. t = 3 h = 2 t = h*t h = h+t Veja a cada passo quais valores as variáveis recebem, e, seu valor nal. Caravalho, T.S.F. (FID) POO 2016 36 / 44
Python O Básico Entrada e saída Você precisa aprender algumas instruções úteis. Para imprimir o conteúdo de uma variável ou uma cadeia de texto, utilize a instrução: print() Para ler algo que o usuário irá informar, utilize: input() Caravalho, T.S.F. (FID) POO 2016 37 / 44
Python O Básico Um programa completo Vamos ao nosso primeiro programa completo: # Nosso primeiro programa var_numero = input("escolha um número: ") print("o número que você escolheu foi: " + var_numero) Experimente no IDLE. Caravalho, T.S.F. (FID) POO 2016 38 / 44
Python Estruturas de controle Laço for for variavel in lista de valores: instrucao1 instrucao2 Exemplo: for x in [1,2,3,4,5] print(x) Caravalho, T.S.F. (FID) POO 2016 39 / 44
Python Estruturas de controle Condicional if condicao: instrucao1 else: instrucao2 Exemplo: if 1 = 1: print("verdade") else: print("sujou!") Caravalho, T.S.F. (FID) POO 2016 40 / 44
Python Estruturas de controle Condicional if condicao1: instrucao1 elif condicao2: instrucao2 elif condicao3: instrucao3 Exemplo: if x == y: print("iguais") elif x>y: print("x é maior") elif x<y: print("y é maior") Caravalho, T.S.F. (FID) POO 2016 41 / 44
Python Estruturas de controle Loop condicional while condicao: instrucao1 instrucao2 Exemplo: x = 1 while x!= 7: print(x) x = x+1 Caravalho, T.S.F. (FID) POO 2016 42 / 44
Python Funções em Python Por que escrever funções? Por que usar funções? Evitar repetição de código Modularizar o programa - redução do problema em partes lembre-se que os objetos podem conter atributos e métodos (funções) Caravalho, T.S.F. (FID) POO 2016 43 / 44
Python Funções em Python Estrutura def nomefuncao (parametros) : instrucao 1 instrucao 2 instrucao final veja que não há pontuação você poderá ou não ter argumentos a serem passados para a função a identação do código é que diz onde começa e termina a função Caravalho, T.S.F. (FID) POO 2016 44 / 44