Baixe o app para aproveitar ainda mais
Prévia do material em texto
Aula 1 Conceitos de Orientação a Objetos Prof. Johnny V. Tafur jtafur@unicarioca.edu.br Histórico de Metodologias de Software • Início Anos 70 - Programação Estruturada • Niklaus Wirth • Fim Anos 70 - Projeto Estruturado • Constantine, Yourdon • Anos 80 - Análise Estruturada • Yourdon/DeMarco, James Martim, Chris Gane • Anos 90 • Orientação a Objetos • Baseado no paradigma estruturado • Qualidade de Software • UML • Componentização Evolução Algol 1960 1965 1970 1975 1980 1985 1990 1995 2000 | | | | | | | | | Simula Pascal CPL Smaltalk Pascal objects Delphi Objective C Java C# BCPL B C C++ ANSI C++ ISO C++ | | | | | | | | | Programação Estruturada Projeto Estruturado Análise Estruturada Orientação a objetos Análise orientada a objetos UML AT&T Bell AT&T Bell Sun Microsoft Borland QUALIDADE DE SOFTWARE A Crise do Software (Problemas e Causas) Qualidade de software é um conjunto de propriedades a serem satisfeitas em um determinado grau, de modo que o software satisfaça às necessidades de seus usuários Atributos de qualidade: Corretude, Eficiência, Manutenibilidade Portabilidade, Reusabilidade, Robustez, Extensibilidade, Integridade e Usabilidade Os fatores extensibilidade e reusabilidade estão diretamente relacionados à manutenção de sistemas. Estima-se que 70% do custo de software corresponde à manutenção Clareza versus Eficiência Pensamento a longo prazo e desenvolvimento disciplinado, ao invés de resultados imediatos e de qualquer jeito Software tem que ser adaptável, flexível, fácil de manter (custos e tempo reduzidos de desenvolvimento e manutenção) 6 PARADIGMAS DE PROGRAMAÇÃO O que é Paradigma de Programação? Modelo, padrão ou estilo de programação suportado por linguagens que agrupam certas características comuns Paradigma Imperativo Programas centrados no conceito de um estado (modelado por variáveis) e ações (comandos) que manipulam o estado Paradigma também denominado de procedural, por incluir subrotinas ou procedimentos como mecanismo de estruturação Primeiro paradigma a surgir e ainda é o dominante Paradigma Orientado a Objetos Não é um paradigma no sentido estrito: é uma subclassificacão do imperativo A diferença é mais de metodologia quanto à concepção e modelagem do sistema A grosso modo, uma aplicação é estruturada em módulos (classes) que agrupam um estado e operações (métodos) sobre este 7 PARADIGMAS DE PROGRAMAÇÃO Paradigma Funcional Programas são funções que descrevem uma relação explícita e precisa entre E/S Estilo declarativo: não há o conceito de estado nem comandos como atribuição Conceitos sofisticados como polimorfismo, funções de alta ordem e avaliação sob demanda Aplicação: IA Paradigma Lógico Programas são relações entre E/S Estilo declarativo, como no paradigma funcional Na prática, inclui características imperativas, por questão de eficiência Aplicações: SGBD CONCEITOS DA ORIENTAÇÃO A OBJETOS Administração da Complexidade Abstração (dados e procedimentos): Deter em elementos relevantes Encapsulamento: Separar aspectos externos dos detalhes internos Modularidade: Módulos coesos e fracamente acoplados Herança: Compartilhamento de propriedades e comportamento Conceitos Básicos Objetos: Elemento que desempenha um papel específico Classes e Instâncias: Classe descreve um conjunto de objetos com mesmos atributos/operações/relações/semântica Mecanismos de Estruturação: Ligações e Associações / Composição e Agregação / Herança Métodos e Mensagens: Métodos implementam operações e Mensagens são usadas para ativar métodos Persistência: Transcender o tempo/espaço CONCEITOS DA ORIENTAÇÃO A OBJETOS Conceitos Avançados Classes e Operações Abstratas: Classes abstratas organizam características comuns a diversas classes. Operações abstratas possuem múltiplas implementações Polimorfismo: Um objeto emissor de uma mensagem não precisa conhecer a classe do objeto receptor. As operações possuem a mesma assinatura e semântica Sobrecarga: As operações não têm necessariamente a mesma semântica e nem precisam conservar sua assinatura Ligação Dinâmica: A mensagem somente é associada ao método específico da classe do objeto receptor no momento em que é enviada 1 0 CONCEITOS DA ORIENTAÇÃO A OBJETOS Administração de Complexidade Abstração Encapsulamento Modularidade Herança Conceitos Básicos Objetos Mecanismos de Estruturação Classe e Instâncias Métodos e Mensagens Persistência Conceitos Avançados Classes e Operações Abstratas Polimorfismo Sobrecarga Ligação Dinâmica Para uma linguagem ser considerada OO, ela precisa implementar 4 conceitos: •Abstração •Encapsulamento •Herança •Polimorfismo. 1 1 ANÁLISE, PROJETO E PROGRAMAÇÃO OO Na Análise OO o objetivo é desenvolver um modelo OO do domínio da aplicação. Os objetos identificados podem ou não podem ser mapeados diretamente em objetos do sistema No Projeto OO o objetivo é desenvolver um modelo OO de um sistema de software para implementar os requisitos identificados. Estes requisitos podem ou não ser estruturados em objetos no domínio do problema Na Programação OO o objetivo é realizar um projeto de software usando uma linguagem de programação OO. Uma linguagem de programação OO suporta diretamente a implementação de objetos e fornece classes e herança 1 2 UNIFIED MODELING LANGUAGE (UML) A UML é uma linguagem padrão para especificar, visualizar, documentar e construir artefatos de um sistema e pode ser utilizada ao longo de todo o ciclo de desenvolvimento e através de diferente tecnologias de implementação Será citada a utilização do diagrama de classes Uma classe UML apresenta a seguinte representação gráfica: Nome da Classe (obrigatório) Atributos da Classe (opcional) Operações da Classe (opcional) Implementação em Java public class Sala{ int codigoSala; public void consultarSalas(){...} } PROGRAMAÇÃO ORIENTADA A OBJETOS A Programação Orientada a Objetos (Object-Oriented Programing) foi concebida no início da década de 70 Estruturação do programa é baseada nos dados e não nas funções As funções mudam com mais frequência do que os dados Linguagens OO A orientação a objetos pode ser praticada em uma linguagem imperativa tal como C ou Pascal. Entretanto, as regras de escopo não prevenirão dos acessos impróprios a um objeto a partir de outro módulo, ficando sob a responsabilidade do programador Formalmente, para ser considerada uma linguagem OO, esta precisa implementar quatro conceitos importantes: abstração, encapsulamento, herança e polimorfismo Paradigma Estrutural x Orientação a Objetos Paradigma Estrutural x Orientação a Objetos • Consiste no mapeamento do problema no mundo real a ser resolvido num modelo computacional. • Programação Estrutura o Consiste na criação de um conjunto de procedimentos (algoritmos) para resolver o problema o Encontrar modos apropriados de armazenar os dados • Programação Orientada a Objetos o Consistem em identificar os objetos e as operações relevantes no mundo real o O mapeamento desses em representações abstratas no espaço de soluções Programação Orientadaa Objetos • Paradigma de Programação • Dominante nos dias atuais • Substituiu as técnicas de programação procedimental (estruturada) • “Fornece um mapeamento direto entre o mundo real e as unidades de organização utilizadas no projeto” • Diversas unidades de software, chamadas de objetos, que interagem entre si • Separa claramente a noção de o que é feito de como é feito Programação Orientada a Objetos Representação: Definição de Objetos • Um objeto é algo do mundo real : o Concreto ou Abstrato • As percepção dos seres humanos é dada através dos objetos • Um objeto é uma entidade que exibe algum comportamento bem definido. Objetos • Características oDados representam características • São chamados atributos • São as variáveis do objeto • Comportamento oOperações definem comportamento • São os métodos de um objeto • São as funções que são executadas por um objeto Objetos - Propriedades • Estado • Representado pelos valores dos atributos de um objeto • Comportamento • Definido pelo conjunto de métodos do objeto • Estado representa o resultado cumulativo de seu comportamento • Identidade • Um objeto é único, mesmo que o seu estado seja idêntico ao de outro; • Seu valor de referência • Os valores dos DADOS são modificados a partir das OPERAÇÕES sobre estes dados Objetos - Propriedades Classes • São especificações para objetos; • Representam um conjunto de objetos que compartilham características e comportamentos comuns. Abstração • Abstração é uma das formas fundamentais que nós lidamos com a complexidade.; • Quando queremos diminuir a complexidade de alguma coisa, ignoramos detalhes sobre as partes para concentrar a atenção no nível mais alto de um problema; • Não se analisa o “todo”, na AOO é importante analisar as partes para entender o todo. Abstração • Foca a característica essencial de alguns objetos relativo a perspectiva do visualizador Conceitos de Orientação a Objetos
Compartilhar