faculdade de alagoas – fal bacharelado em sistemas de informação disciplina : 169301 -...

Post on 07-Apr-2016

213 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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

top related