Baixe o app para aproveitar ainda mais
Prévia do material em texto
Engenharia de Software II Parte 4 - A Introdução à Orientação a Objetos 1 Prof. Dr. Celso Gallão Abril/2017 F A T E C S Ã O C A E T A N O “O engenheiro de software amador está sempre à procura da mágica, de algum método sensacional ou ferramenta cuja aplicação promete tornar trivial o desenvolvimento de software. É uma característica do engenheiro de software profissional saber que tal panacéia não existe.” [Grady Booch] Engenharia de Software II – Parte 4 - Prof. Celso Gallão – Slide 2 Introdução à Orientação a Objetos1 Engenharia de Software II – Parte 4 - Prof. Celso Gallão – Slide 3 1.1 – Introdução • Grande parte da pesquisa em Engenharia de Software e em Linguagens de Programação tem sido direcionada para a busca de metodologias que sejam: • SIMPLES o suficiente: que permita ao programador atingir seus objetivos; • PODEROSAS o bastante: para que o programador expresse todas suas soluções. Orientação a Objetos1 Engenharia de Software II – Parte 4 - Prof. Celso Gallão – Slide 4 1.1 – Introdução • A modelagem Orientada a Objetos, eleva o desenvolvimento de sistemas para um novo patamar. • É um mecanismo que ajuda a definir a estrutura de programas com base nos conceitos do mundo real, abstraindo-os. • Permite criar programas modulares, separando as partes do sistema por responsabilidades e fazendo com que essas partes se comuniquem entre si, por meio de mensagens. Orientação a Objetos1 Engenharia de Software II – Parte 4 - Prof. Celso Gallão – Slide 5 1.2 – Conceitos Fundamentais • Objeto • Mensagem • Classe • Abstração • Encapsulamento • Herança • Polimorfismo Orientação a Objetos1 Engenharia de Software II – Parte 4 - Prof. Celso Gallão – Slide 6 1.2 – Conceitos Fundamentais OBJETO Os objetos do mundo real têm duas características básicas: • ESTADO: revela suas características. Por exemplo: uma pessoa possui idade, peso, altura, cor de cabelo, cor da pele, etc. • COMPORTAMENTO: são as ações que o objeto executar. Por exemplo, uma pessoa pode andar, falar, ouvir, pular, etc. Orientação a Objetos1 Engenharia de Software II – Parte 4 - Prof. Celso Gallão – Slide 7 1.2 – Conceitos Fundamentais OBJETO Por definição, um objeto é um pacote de software que possui variáveis (estados) e métodos (comportamentos), e com um papel bem definido no domínio do problema. Orientação a Objetos1 Engenharia de Software II – Parte 4 - Prof. Celso Gallão – Slide 8 1.2 – Conceitos Fundamentais OBJETO Os dados relativos a um objeto são denominados atributos. Os métodos são as ações possíveis de serem realizadas pelo objeto. São similares às subrrotinas ou procedimentos da programação estruturada. Orientação a Objetos1 Engenharia de Software II – Parte 4 - Prof. Celso Gallão – Slide 9 1.2 – Conceitos Fundamentais MENSAGEM Para os objetos interagirem e passarem a ter sentido e valor em um sistema, precisam comunicar-se entre si. Esta comunicação é feita por meio de troca de mensagens, e significa que um método está sendo executado. Orientação a Objetos1 Engenharia de Software II – Parte 4 - Prof. Celso Gallão – Slide 10 1.2 – Conceitos Fundamentais MENSAGEM Uma mensagem é um sinal que um objeto envia para outro pedindo para o receptor do sinal que execute um de seus métodos. Orientação a Objetos1 Engenharia de Software II – Parte 4 - Prof. Celso Gallão – Slide 11 1.2 – Conceitos Fundamentais CLASSE No mundo real, frequentemente percebemos vários objetos de um mesmo tipo. Por exemplo: seu carro é um dos muitos carros existentes no mundo. Dizemos que um carro em particular é uma instância da classe de objetos conhecida como carros. Os carros, em geral, possuem estado (cor, potência do motor, combustível) e comportamento (ligar, acelerar, parar, mudar marcha) em comum. Orientação a Objetos1 Engenharia de Software II – Parte 4 - Prof. Celso Gallão – Slide 12 1.2 – Conceitos Fundamentais CLASSE Na Orientação a Objetos também é possível ter vários objetos do mesmo tipo, que compartilham características em comum, podendo abstrair modelos para esses objetos. Esses modelos são as chamadas classes. São nas classes onde se definem as variáveis e implementam-se os métodos. Orientação a Objetos1 Engenharia de Software II – Parte 4 - Prof. Celso Gallão – Slide 13 1.2 – Conceitos Fundamentais CLASSE Por definição, uma classe é um modelo que define as variáveis (estado) e os métodos (comportamento) comuns a todos os objetos do mesmo tipo. Orientação a Objetos1 Engenharia de Software II – Parte 4 - Prof. Celso Gallão – Slide 14 1.2 – Conceitos Fundamentais CLASSE Na Classe se definem as características comuns e os Objetos são instâncias dessas Classes, com estado próprio. Os Objetos são criados a partir de suas Classes. Orientação a Objetos1 Engenharia de Software II – Parte 4 - Prof. Celso Gallão – Slide 15 1.2 – Conceitos Fundamentais ABSTRAÇÃO: Dividir um conceito complexo em partes que interagem, abstraindo seus processos internos. Uma classe é uma abstração de entidades existentes no domínio do sistema de software, levando-se em conta apenas os detalhes importantes para a resolução do problema e desprezando coisas que não têm importância no contexto. Orientação a Objetos1 Engenharia de Software II – Parte 4 - Prof. Celso Gallão – Slide 16 1.2 – Conceitos Fundamentais ABSTRAÇÃO: Por exemplo, uma C/C bancária. Ao abstrair, identifica- se detalhes comuns, como o número da C/C, número da agência, saldo, etc.; e operações como débito em C/C, depósito e extrato da C/C. Genericamente, essas são as características de C/C para todos os bancos. Orientação a Objetos1 Engenharia de Software II – Parte 4 - Prof. Celso Gallão – Slide 17 1.2 – Conceitos Fundamentais ENCAPSULAMENTO: Cada parte pode esconder a complexidade de seu funcionamento interno, das outras partes, fornecendo apenas uma interface bem definida. Permite que mudanças no seu modelo interno não afetem outras partes do sistema. Ajuda a prevenir o problema de interferência externa indevida sobre os dados do sistema. Orientação a Objetos1 Engenharia de Software II – Parte 4 - Prof. Celso Gallão – Slide 18 1.2 – Conceitos Fundamentais ENCAPSULAMENTO: Por exemplo: não é preciso conhecer os detalhes dos circuitos de um telefone para utilizá-lo. A carcaça do telefone encapsula esses detalhes, provendo uma interface mais amigável. Orientação a Objetos1 Engenharia de Software II – Parte 4 - Prof. Celso Gallão – Slide 19 1.2 – Conceitos Fundamentais ENCAPSULAMENTO: Na prática, limita-se o acesso a atributos de uma classe exclusivamente através de seus métodos de visibilidade. + público (public): pode ser acessado por qualquer classe. # protegido (protected): pode ser acessado apenas pela própria classe e suas subclasses. - privado (private): pode ser acessado apenas pela própria classe a que pertence. ~ pacote (package): acesso dentro do pacote. Orientação a Objetos1 Engenharia de Software II – Parte 4 - Prof. Celso Gallão – Slide 20 1.2 – Conceitos Fundamentais HERANÇA É um mecanismo que permite criar novas classes a partir de classes já existentes, aproveitando-se das características existentes na classe a ser estendida. Orientação a Objetos1 Engenharia de Software II – Parte 4 - Prof. Celso Gallão – Slide 21 1.2 – Conceitos Fundamentais HERANÇA Assim, é possível criarclasses derivadas (subclasses) a partir de classes bases (superclasses). As subclasses são mais especializadas do que as suas superclasses, mais genéricas. As subclasses herdam todas as características de suas superclasses, como suas variáveis e métodos. Orientação a Objetos1 Engenharia de Software II – Parte 4 - Prof. Celso Gallão – Slide 22 1.2 – Conceitos Fundamentais HERANÇA Por exemplo: Orientação a Objetos1 Engenharia de Software II – Parte 4 - Prof. Celso Gallão – Slide 23 1.2 – Conceitos Fundamentais HERANÇA Os subtipos, além de herdarem todas as características de seus supertipos, também podem adicionar mais características, seja na forma de variáveis e/ou métodos adicionais, bem como reescrever métodos já existentes na superclasse (polimorfismo). A herança permite vários níveis na hierarquia de classes, podendo criar tantos subtipos quanto necessário, até se chegar no nível de especialização desejado. Orientação a Objetos1 Engenharia de Software II – Parte 4 - Prof. Celso Gallão – Slide 24 1.2 – Conceitos Fundamentais POLIMORFISMO (Várias Formas) O polimorfismo denota uma situação na qual um objeto pode comportar-se de maneiras diferentes ao receber uma mensagem, dependendo do seu tipo de criação. Duas subclasses de uma mesma classe podem ter implementações completamente diferentes de um mesmo método, o que leva os objetos a se comportarem de forma diferente, dependendo do seu tipo (classe). Orientação a Objetos1 Engenharia de Software II – Parte 4 - Prof. Celso Gallão – Slide 25 1.2 – Conceitos Fundamentais POLIMORFISMO (Várias Formas) Por exemplo, uma classe chamada Impressora, em um programa que faça a impressão de relatórios. Esta classe é uma interface de acesso às funcionalidades da impressora por meio de um driver fornecido pelo fabricante. Impressoras diferentes poderão ser acessadas com uma simples mensagem de imprimir para a impressora, sem que o programa tenha que gerenciar tais diferenças. Orientação a Objetos1 Engenharia de Software II – Parte 4 - Prof. Celso Gallão – Slide 26 1.2 – Conceitos Fundamentais POLIMORFISMO (Várias Formas) Orientação a Objetos1 Engenharia de Software II – Parte 4 - Prof. Celso Gallão – Slide 27 1.3 – Vantagens • Reuso de código; • Redução das linhas de código programadas; • Separação de responsabilidades; • Componentização; • Maior flexibilidade do sistema; • Facilidade na manutenção; • Aumento de produtividade, dentre outras... Orientação a Objetos1 Engenharia de Software II – Parte 4 - Prof. Celso Gallão – Slide 28
Compartilhar