Programação Orientada a Objeto Prof. Esp. Thiago S F Carvalho Faculdades Integradas de Diamantino 2016 Caravalho, T.S.F. (FID) POO 2016 1 / 38
Programação Orientada a Objeto Hoje revisaremos os conceitos estudados de Orientação a Objeto vistos nas primeiras semanas do curso como preparação para a prova teórica. Caravalho, T.S.F. (FID) POO 2016 2 / 38
Modelagem Orientada a Objeto Conteúdo 1 Modelagem Orientada a Objeto 2 Mais sobre classes Diagrama de Classes 3 Padrões de codicação Cada classe no seu arquivo Nomemclatura Comentários Caravalho, T.S.F. (FID) POO 2016 3 / 38
Modelagem Orientada a Objeto Modelo OO Decomposição do sistema é orientada a objetos Os modelos são centrados nos objetos que compõe o sistema A análise OO é muito diferente da análise estruturada (esta se concentra nos procedimentos) Caravalho, T.S.F. (FID) POO 2016 4 / 38
Modelagem Orientada a Objeto Modelo Lógico Classes e Objetos Abstrações do problema que se está tratando. O que é um objeto? Variável... mas... permite que se faça nele operações. Logo, um objeto possui atributos (que são os dados) e comportamentos (que são os métodos, procedimentos ou funções) que atuam sobre ele. Exemplo de objetos: Carro, Casa, Sala... Caravalho, T.S.F. (FID) POO 2016 5 / 38
Modelagem Orientada a Objeto Como a OO funciona? Conjunto de objetos dizendo um para os outros o que fazer (enviando mensagens) Essas chamadas são realizadas através das funções pertencentes ao objeto Cada objeto tem seu espaço reservado na memória e, deve pertencer a um determinado tipo (Classe). Caravalho, T.S.F. (FID) POO 2016 6 / 38
Modelagem Orientada a Objeto Classes...? Cada objeto mesmo sendo único faz parte de uma classe de objetos = características comuns. Criar classes é algo essencial a se entender na OO: Se crio uma classes eu posso instanciá-la (criar objetos dessa classe); Se ela é um tipo eu posso manipulá-la na linguagem; Ela dene o comportamento e as características do objeto que será criado. Caravalho, T.S.F. (FID) POO 2016 7 / 38
Modelagem Orientada a Objeto características Comuns Todos os objetos de uma classe possuem características comuns: Todo carro possui uma cor, toda pessoa tem um nome... Cada objeto possui um estado: Um carro pode ser vermelho, uma pessoa pode se chamar Maria... Caravalho, T.S.F. (FID) POO 2016 8 / 38
Modelagem Orientada a Objeto Fazendo o Objeto trabalhar As classes pode possuir várias instâncias criadas, mas, como fazer com que elas se comuniquem? Fusca new Carro(); Fusca->andarPraFrente(); Fusca->andarPraTras(); Caravalho, T.S.F. (FID) POO 2016 9 / 38
Modelagem Orientada a Objeto Objetos e Interfaces O que os métodos fazem? Implementação. No modelo a implementação não é importante. Caravalho, T.S.F. (FID) POO 2016 10 / 38
Modelagem Orientada a Objeto Objetos e Interfaces O servidor vai funcionar como ele foi programado Cliente utiliza o objeto só poderá através da interface (visível) O que está oculto para o cliente: O que está escondido pode mudar sem estragar o que está funcionando) Se o cliente tiver acesso, ele pode fazer isso sozinho (estragar) Caravalho, T.S.F. (FID) POO 2016 11 / 38
Modelagem Orientada a Objeto Encapsulamento Controle de acesso Interface = métodos públicos Os métodos internos (não visíveis) = métodos privados Caravalho, T.S.F. (FID) POO 2016 12 / 38
Modelagem Orientada a Objeto Reutilização É possível usar o objeto da classe diretamente Usar o objeto de uma classe dentro de outra (nova) classe Atenção! Os verbos - conter, possuir - indicam a composição! Caravalho, T.S.F. (FID) POO 2016 13 / 38
Modelagem Orientada a Objeto 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 14 / 38
Modelagem Orientada a Objeto 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 15 / 38
Modelagem Orientada a Objeto 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 16 / 38
Modelagem Orientada a Objeto 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 17 / 38
Modelagem Orientada a Objeto 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 18 / 38
Mais sobre classes Conteúdo 1 Modelagem Orientada a Objeto 2 Mais sobre classes Diagrama de Classes 3 Padrões de codicação Cada classe no seu arquivo Nomemclatura Comentários Caravalho, T.S.F. (FID) POO 2016 19 / 38
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 20 / 38
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 21 / 38
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 22 / 38
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 23 / 38
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 24 / 38
Mais sobre classes 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 25 / 38
Mais sobre classes Diagrama de Classes Notação para Classe Caravalho, T.S.F. (FID) POO 2016 26 / 38
Mais sobre classes Diagrama de Classes Notação para Classe Especicação do acesso: public + private - protected # Caravalho, T.S.F. (FID) POO 2016 27 / 38
Mais sobre classes Diagrama de Classes Visibilidade Como vimos no projeto, os atributos e métodos poderm ser públicos, privados e protegidos. Público: quando é visível pela classe onde é denido e por outras classes Privado: quando são visíveis apenas pela classe em que são declarados Protegidos: quando são visíveis apenas pelas classes em que são declarados e por suas subclasses Caravalho, T.S.F. (FID) POO 2016 28 / 38
Mais sobre classes Diagrama de Classes Relacionamentos Podem ser: 1 dependência 2 generalização 3 associação Caravalho, T.S.F. (FID) POO 2016 29 / 38
Mais sobre classes 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 30 / 38
Mais sobre classes 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 31 / 38
Mais sobre classes 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 32 / 38
Padrões de codicação Conteúdo 1 Modelagem Orientada a Objeto 2 Mais sobre classes Diagrama de Classes 3 Padrões de codicação Cada classe no seu arquivo Nomemclatura Comentários Caravalho, T.S.F. (FID) POO 2016 33 / 38
Padrões de codicação Padrões de codicação Veremos a seguir algumas boas práticas para codicação de sistemas. Caravalho, T.S.F. (FID) POO 2016 34 / 38
Padrões de codicação Cada classe no seu arquivo Boas Práticas 1 A boa prática da modularização de código, nos diz que cada porção deste deve ser agrupada por similaridade de função/comportamento. 2 Se tenho uma classe no meu modelo chamada Pessoa, no meu código, crio um arquivo separado para guardar o código dessa classe (Pessoa.xyz). 3 Posso criar quantos arquivos forem as classes e/ou as similaridades de código (por exemplo ter um arquivo só com funções genéricas ou agrupá-las numa superclasse por exemplo). Caravalho, T.S.F. (FID) POO 2016 35 / 38
Padrões de codicação Nomemclatura Nomemclatura Já explicamos anteriormente, mas, não custa repetir: Os nomes dos atributos e métodos devem respeitar alguma convenção da linguagem; Sugere-se utilizar a Camel Case de acordo com o tipo de elemento: lowercamelcase são iniciados por letras minúsculas, usado na denição de variáveis e métodos; UpperCamelCase são iniciados por letras maiúsculas, usado para Classes O elemento deve obrigatoriamente ter seu nome iniciado por letra ou underline; Utilize nomes sugestivos e, que se adequem ao modelo. Caravalho, T.S.F. (FID) POO 2016 36 / 38
Padrões de codicação Comentários Comente seu código Toda linguagem de programação permite algum tipo de documentação de código. A principal delas é o comentário. O Python especicamente utiliza a tag # para permitir o comentário de linha e a tag ' ' ' (três aspas simples) para comentário de bloco, veja um exemplo: Caravalho, T.S.F. (FID) POO 2016 37 / 38
Padrões de codicação Comentários Exemplo class operacoes: ''' Esta classe faz operações numéricas básicas utilizando números inteiros ''' def soma(self): #método soma ''' Este método soma dois números ''' Caravalho, T.S.F. (FID) POO 2016 38 / 38