Faculdade de Alagoas – FAL Bacharelado em Sistemas de Informação Disciplina : 169301 -...
-
Upload
roberto-figueiroa-gusmao -
Category
Documents
-
view
213 -
download
0
Transcript of Faculdade de Alagoas – FAL Bacharelado em Sistemas de Informação Disciplina : 169301 -...
Faculdade de Alagoas – FALBacharelado em Sistemas de Informação
Disciplina :169301 - Programação II – 3º período
Ementa:Programação orientada a objetos: conceitos básicos; classes; métodos; herança e polimorfismo. Aplicação do paradigma orientado a objetos. Estudo de casos.
Professor:Luiz Olívio Costa de Oliveira2005/1
Curso de Sistemas de Informação Programação II – 3º período horário: seg – 20:40 às 22:20
ter – 18:50 às 20:30 pré-requisitos: Programação I (169201)
Lógica Matemática (169204) livros texto:
Boratti, I. C. “Programação Orientada a Objetos usando DELPHI”. Saraiva. 2001.Fernandes, A. “DELPHI 5 – Básico & Avançado”. Express Book. 1999.Cantu, M. “Dominando DELPHI 6: a bíblia”. Makron Books. 2001.
Ementário O Modelo de Objetos Conceitos da POO Impacto do modelo OO no desenvolvimento de software Métodos de análise e projeto de sistemas OO UML- Unified Modeling Language
Diagrama de classe (objeto) Diagrama de caso de uso Diagramas de interação: seqüência e colaboração Diagrama de estado: atividade Diagramas de implementação: componente e implantação
Problemas na Produção de Software no “começo” do uso de computadores:
o custo da computação era o equipamento eletrônico no fim dos anos 60
a crise do software (programação estruturada) atualmente a situação se inverteu
computadores mais rápidos e baratos tecnologia de software não apresentou um
desenvolvimento comparável tecnologia de orientação a objetos
Evolução das Linguagens de Programação (LP) A evolução do Modelo de Objetos está
intensamente ligada ao desenvolvimento das linguagens de programação.
Foi com o aumento da tecnologia e da capacidade dos computadores que problemas mais complexos puderam ser resolvidos pela máquina.
Histórico da Evolução das LP (1/2)
Década de 40, programação física linguagem de máquina
Década de 50, programação lógica linguagens montadoras, assembler (ainda
exigiam conhecimentos do hardware) linguagens de 1ª geração, abstração do
hardware, ênfase em cálculos Fortran, Algol 58, ...
Histórico da Evolução das LP (2/2)
Década de 60, linguagens de 2ª geração, ênfase nos dadosFortran, Algol 60, Cobol, LISP
Década de 70, linguagens de 3ª geração, ênfase na estruturação do códigoPL/1, Fortran, Algol 68, CobolPascal (ferramenta de aprendizagem)Simula
A Crise do Software- Parte I. Problemas detectados na década 60:
baixa produtividade, falta de uma “metodologia formal” para o desenvolvimento de software, códigos literalmente sem a possibilidade de serem mantidos
1968, Dikjstra, lança os conceitos da Programação Estruturada (PE): não usar goto, estruturas básicas de controle
(seqüência, condição e repetição), subprogramação (ou modularização), tipo abstrato de dados = modelo matématico + operações.
Estruturas Básicas de Controle
Seqüência, condição (ou seleção) e repetição formas de raciocínio intuitivamente óbvias
A legibilidade e compreensão de cada bloco de código é enormemente incrementada, proibindo o uso irrestrito de comandos de desvio (GOTO)
Subprogramação
Em geral:problemas complexos = programas complexos
Mas sempre é possível dividir:problemas grandes e complicados em
problemas menores e de solução mais simples Programa complexo = Subprograma 1 +
Subprograma 2 + ... + Subprograma N
Definição
Um subprograma, é um nome dado a um trecho de um programa mais complexo e que, em geral, encerra em si próprio um pedaço da solução de um problema maior, o programa a que ele está subordinado.
São sinônimos: bloco de código, módulo, métodos, procedimentos, funções, subprograma, subrotina e subalgoritmo; e são conceitos da ciência conhecida como engenharia de software.
Método dos Refinamentos SucessivosÉ uma “sistemática” de abordagem útil no projeto detalhado e naimplementação de softwares.
Partindo-se de um dado problema, para qual se deseja encontrar umprograma de solução, deve-se procurar subdividi-lo em problemasmenores (subproblemas) e de solução mais simples. Alguns destesproblemas terão solução imediata e outros não.
Os subproblemas para os quais não for possível encontrar uma soluçãodireta devem ser novamente subdivididos.
Assim, o processo é repetido até que se consiga encontrar um programapara solucionar cada um dos subproblemas definidos.
Então, o programa de solução do problema original será composto pelajustaposição dos programas usados para solucionar cada um dossubproblemas em que o problema original foi decomposto.
Em Síntese: Método dos Refinamentos Sucessivos
dividir uma subrotina em outras tantas quantas forem necessárias, buscando uma solução mais simples de uma parte do problema maior
técnica de programação estruturadadividir-para-conquistar
Vantagens da Subprogramação subdivisão de programas complexos
facilita o entendimento (partes independentes) estruturação de programas
detecção de erros e documentação de sistemas modularização de sistemas
desenvolvimento por equipes de programadoresmanutenção de softwarereutilização de subprogramas
A questão é: “Reutilização de Software”
Objetivo:Economia de tempo e trabalho.
Princípio:Um conjunto de subprogramas destinado a solucionar uma série de tarefas bastante corriqueiras é desenvolvidoe vai sendo aumentado com o passar do tempo, com o acréscimo de novos subprogramas. A este conjunto dá-seo nome de biblioteca. No desenvolvimento de novossistemas, procura-se ao máximo basear sua concepçãoem subprogramas já existentes na biblioteca, de modoque a quantidade de software realmente novo que deveser desenvolvido é minimizada.
Tipos Abstratos de Dados, Segundo ZivianiUm Tipo Abstrato de Dados (TAD) pode ser visto como ummodelo matemático, acompanhado das operações definidassobre o modelo. O conjunto dos inteiros acompanhado dasoperações de adição, subtração e multiplicação forma umexemplo de um TAD.
TAD podem ser considerados generalizações de tiposprimitivos de dados, da mesma forma que procedimentos sãogeneralizações de operações primitivas tais como adição,subtração e multiplicação. Assim como um procedimento éusado para encapsular partes de um programa, o tipo abstratode dados pode ser usado para encapsular tipos de dados. Nestecaso a definição do tipo e todas as operações definidas sobreele podem ser localizadas em uma única seção do programa.
Tipos Abstratos de Dados, Segundo PereiraUm TAD é formado por um conjunto de valores e por umasérie de funções que podem ser aplicadas sobre estes valores.Funções e valores, em conjunto, constituem um modelomatemático que pode ser empregado para “modelar”esolucionar problemas do mundo real; servindo para especificar as características relevantes dos objetosenvolvidos no problema, de que forma eles se relacioname como podem ser manipulados.
Entretanto, sendo o TAD apenas um modelo matemático, suadefinição não leva em consideração como os valores serãorepresentados na memória do computador (organização dosbits), nem se preocupa com o “tempo” que será gasto paraaplicar as funções (rotinas) sobre tais valores.
Tipos Abstratos de Dados, Segundo PereiraPara que se possa realmente aplicar um modelo matemáticona resolução de problemas por computador, é preciso antestransformá-lo em um tipo de dados concreto (ousimplesmente, tipo de dados).A transformação de um tipo de dados abstrato em um tipode dados concreto é chamada implementação. É duranteo processo de implementação que a estrutura dearmazenamento dos valores é especificada, e que osalgoritmos que desempenharão o papel das funções são projetados.
TIPO DE DADOSABSTRATO
(modelo matemático)IMPLEMENTAÇÃO
TIPO DE DADOSCONCRETO
(padrão de bits/rotinas)
Característica da PE decomposição gradativa dos programas ao nível
fundamental (desenvolvimento Top-Down) programação orientada a procedimentos
blocos estruturados de programas (procedure, function) a comunicação entre os blocos se faz utilizando variáveis
globais e pela passagem de dados através de parâmetros
os dados são processados nos blocos e migram de um bloco para outro (variáveis globais e par. por referência)
a execução é caracterizada pelo acionamento do bloco tipo abstrato de dados = modelo matemático +
operações
Programação Estruturada
Dados
Bloco deCódigo
________________________
Bloco deCódigo
________________________
Bloco deCódigo
________________________
. . .
variáveisglobais
parâmetros passadospor valor
parâmetros passadospor referência (var)
A Crise do Software- Parte II.
Necessidades atuais dos sistemas: produtividade e qualidade.
Características atuais dos sistemas: complexidade, tamanho (milhões de linhas de código).
Necessidades atuais do mercado e das empresas competitividade.
Solução: Programação Orientada a Objetos (POO).
A Promessa para os Anos 90 (1/2)
Estamos passando por um momento único na história da computação.
Existe uma “Nova Ordem” na computação A influência provocada na maneira de se
desenvolver software será imensa. O software terá que se ajustar a esta “Nova
Ordem” em todos os aspectos. É necessário uma revolução na maneira em que
se constrói software.
A Promessa para os Anos 90 (2/2)
Esta revolução provavelmente virá de técnicas de Orientação a Objetos (OO).
“A Programação Orientada a Objetos está para os anos 90 assim como a Programação Estruturada estava para os anos 80”.
OO é considerado por vários autores como a salvação para os problemas no desenvolvimento de software.
Uma Nova Filosofia (1/3)
“Implementar em Computadores uma Abstração do Mundo Real”.
Esta implementação é feita mais especificamente com Classes.
Classes e Objetos fazem parte da vida de todos.
Uma Nova Filosofia (2/3) Objetos são instâncias, ou exemplares, de Classes,
que determinam qual informações um objeto contém e como ele pode manipulá-las.
Objetos são compostos de atributos e comportamentos.
Um programa desenvolvido com uma linguagem de POO manipula estruturas de dados através de objetos da mesma forma que um programa em linguagem tradicional utiliza variáveis.
Dados e códigos não são mais separados.
Uma Nova Filosofia (3/3)
Um dos grandes diferenciais da POO em relação a outros paradigmas de programação está no conceito de herança, mecanismo através do qual definições existentes podem ser facilmente reutilizadas, modificadas e estendidas.
Juntamente com a herança deve ser enfatizada a importância do polimorfismo, que permite selecionar funcionalidades que um programa irá utilizar de forma dinâmica, durante sua execução.
Em Resumo:Característica da POO dados e procedimentos fazem parte, ou são
encapsulados, em um só elemento básico chamado Classe
os objetos são exemplares das classes a comunicação entre os objetos caracteriza a
execução do programa reutilização de código através de herança
Programação Orientada a Objetos
Classe
Dados
Código
Objeto 1
Dados
Código Objeto 2
Dados
Código
Objeto N
Dados
Código
...
Entidadeabstrata(tipo)
Entidades concretas, exemplares da classe (variável)
Vantagens da POO
produtividade desenvolvimento rápido controle da complexidade manutenibilidade reutilização de códigos menor custo para desenvolvimento e
manutenção de sistemas
Produção de Software
Programação Estruturada
X
Programação Orientada a Objetos
Programação EstruturadaSob Perspectiva de um Subprograma.
Nessa visão, o principal bloco de construção do software é o procedimento ou a função.
Essa perspectiva conduz desenvolvedores a voltar seu foco de atenção para questões referentes ao controle e à decomposição de programas maiores em outros menores.
Desvantagens, à medida que os requisitos se modificam e o sistema cresce, será difícil fazer a manutenção de sistemas.
Programação Orientada a ObjetosSob Perspectiva de uma Classe.
Nesta visão, o principal bloco de construção de todos os sistemas de software é o objeto ou a classe.
Um objeto é alguma coisa geralmente estruturada a partir do vocabulário do espaço do problema ou do espaço da solução; uma classe é a descrição de um conjunto de objetos comuns.
Desafios do Modelo de Objetos
investimentos em nova tecnologia treinamento mudança de paradigma
mudança na forma de conceber e programar sistemas
resistência dos programadores familiarizados com as técnicas tradicionais
Fundamentos do Modelo de Objetos Programação Orientada a Objetos
Object-Oriented Programming (OOP) Projeto Orientado a Objetos
Object-Oriented Design (OOD) Análise Orientada a Objetos
Object-Oriented Analysis (OOA)
Programação Orientada a Objetos é um método de implementação em que
programas são organizados como coleções cooperativas de objetos, cada um representando uma instância (exemplar) de alguma classe e cujas classes são membros de uma hierarquia de classes unidas via relacionamento de herança.
construção de sistemas a partir de componentes reutilizáveis, chamados de classes.
Projeto Orientado a Objetos
é um método de projeto, ou design, englobando o processo de decomposição orientada a objetos e uma notação para representar os modelos lógicos e físicos bem como os modelos dinâmicos e estáticos do sistema projetado.
criar um estrutura geral para o sistema.
Análise Orientada a Objetos
é um método de análise que examina requerimentos pelas perspectivas de classes e objetos encontrados no vocabulário do domínio do problema.
definir a abrangência do problema a ser solucionado.
Em Resumo:
A OOA se preocupa em enxergar a estrutura do problema e decompô-la em entidades “abstratas” de classes e objetos, enquanto o OOD procura organizar e descrever essa estrutura “sistematicamente” em um modelo de objetos, e a OOP “implementa” essas estruturas assim modeladas em código de computador.
public class Tartaruga { // Atributos, ou propriedades // Métodos, ou operações}
Tartaruga objTartura = new Tartaruga();
Programação Orientada a Objetos“implementar” as estruturas modelas em código de computador
Análise Orientada a ObjetosDecompor a estrutura do problemaem entidades abstratas
Projeto Orientado a ObjetosApresentar, ou diagramar, o modelo
dos objetos observados
Fundamentos do Modelo de Objetos
modelo conceitual
Conclusão
“Orientação a Objetos é o futuro,e o futuro é aqui e agora”.
Edward Yourdon
“É hora de uma revolução na forma de contruirmos software, .... A revolução é a
programação orientada a objetos”.Brad J. Cox
“Provavelmente o software do ano 2000 você não estará desenvolvendo, você estará herdando, conectando
componentes e distribuindo o processamento”.
Referências
Textos da internet:www.inf.ufsc.br/poo/www.dca.fee.unicamp.br/courses/PooJava/http://puig.pro.br/
Visionnaire Consultoria em Informáticawww.visionnaire.com.br