9
FATEC - SP FACULDADE DE TECNOLOGIA DE SÃO PAULO CAMPUS Carapicuíba PROG. ORIENTADO A OBJETOS I Aula 01 Professor: Glauber da Rocha Balthazar E-mail: [email protected] 1 - Introdução a Programação Orientada a Objetos 1.1 – Histórico da programação orientada a objetos "O computador ideal deveria funcionar como um organismo vivo, isto é, cada “célula” comportar-se-ia relacionando-se com outras células a fim de alcançar um objetivo, entretanto, funcionando de forma autônoma." - Alan Key De acordo com Booch 2000 as linguagens orientadas a objetos surgiram entre a metade da década de 1960 e o final da década de 1980, à medida que o pessoal envolvido com metodologia começou a experimentar métodos alternativos de análise de projeto. Cobra (2009) complementa afirmando que a orientação a objetos tem sua origem nos anos 60 na Noruega, com Kristen Nygaard e Ole-Johan Dahl, no Centro Norueguês de Computação. Através da linguagem Simula 67, foram introduzidos os conceitos de classe e herança. Porém, antes disso, David (2007) diz que o termo Programação Orientada a Objetos foi criado por Alan Kay, autor da linguagem de programação Smalltalk. Mas mesmo antes da criação do Smalltalk, algumas das ideias da POO já eram aplicadas, sendo que a primeira linguagem a realmente utilizar estas idéias foi a linguagem Simula 67, criada por Ole Johan Dahl e Kristen Nygaard em 1967. Cobra (2009) realizou um estudo sobre o trabalho de Alan Kay e produziu um artigo que faz uma caracterização de todas as fases do seu trabalho. Este artigo é transcrito na íntegra para esta apostila: Alan Kay começou a programar em Simula depois de conhecer um inovador programa chamado Sketchpad. Sketchpad foi um editor gráfico desenvolvido por Ivan Sutherland, no MIT, em 1963. É considerado um marco na informática, sendo o primeiro editor gráfico orientado a objetos. Era possível colocar bits coloridos no canvas, mas também criar objetos que poderiam ser manipulados distintamente uns dos outros. O Sketchpad permitia que fosse definido um “master drawing“, a partir do qual seriam criadas “instance drawing” (herança).

Aula 01 - Introdução a Orientação a Objetos

Embed Size (px)

Citation preview

Page 1: Aula 01 - Introdução a Orientação a Objetos

FATEC - SPFACULDADE DE TECNOLOGIA

DE SÃO PAULO

CAMPUS

Carapicuíba

PROG. ORIENTADO A OBJETOS I Aula 01

Professor: Glauber da Rocha BalthazarE-mail: [email protected]

1 - Introdução a Programação Orientada a Objetos

1.1 – Histórico da programação orientada a objetos"O computador ideal deveria funcionar como um organismo vivo,

isto é, cada “célula” comportar-se-ia relacionando-se com outras células a fim de alcançar um objetivo, entretanto,

funcionando de forma autônoma." - Alan Key

De acordo com Booch 2000 as linguagens orientadas a objetos surgiram entre a metade da década de 1960 e o final da década de 1980, à medida que o pessoal envolvido com metodologia começou a experimentar métodos alternativos de análise de projeto. Cobra (2009) complementa afirmando que a orientação a objetos tem sua origem nos anos 60 na Noruega, com Kristen Nygaard e Ole-Johan Dahl, no Centro Norueguês de Computação. Através da linguagem Simula 67, foram introduzidos os conceitos de classe e herança.

Porém, antes disso, David (2007) diz que o termo Programação Orientada a Objetos foi criado por Alan Kay, autor da linguagem de programação Smalltalk. Mas mesmo antes da criação do Smalltalk, algumas das ideias da POO já eram aplicadas, sendo que a primeira linguagem a realmente utilizar estas idéias foi a linguagem Simula 67, criada por Ole Johan Dahl e Kristen Nygaard em 1967.

Cobra (2009) realizou um estudo sobre o trabalho de Alan Kay e produziu um artigo que faz uma caracterização de todas as fases do seu trabalho. Este artigo é transcrito na íntegra para esta apostila:

Alan Kay começou a programar em Simula depois de conhecer um inovador programa chamado Sketchpad. Sketchpad foi um editor gráfico desenvolvido por Ivan Sutherland, no MIT, em 1963. É considerado um marco na informática, sendo o primeiro editor gráfico orientado a objetos. Era possível colocar bits coloridos no canvas, mas também criar objetos que poderiam ser manipulados distintamente uns dos outros. O Sketchpad permitia que fosse definido um “master drawing“, a partir do qual seriam criadas “instance drawing” (herança).

A partir dos conceitos desse sistema, como também dos seus conhecimentos em Biologia e Matemática, Alan Kay formulou sua analogia “algébrico-biológica”. Ele lançou o postulado de que o computador ideal deveria funcionar como um organismo vivo, isto é, cada “célula” comportar-se-ia relacionando-se com outras células a fim de alcançar um objetivo, entretanto, funcionando de forma autônoma. As células poderiam também reagrupar-se para resolver outros problemas ou desempenhar outras funções, trocando mensagens “químicas” entre elas.

No outono de 1968, Kay teve o seu primeiro encontro com Seymour Papert, no Laboratório de Inteligência Artificial do MIT, e ficou interessado na linguagem Logo. Toda a concepção de Kay sobre o papel do computador na sociedade foi alterada quando ele viu Papert e seus colegas ensinando crianças a programar em Logo. Logo é uma linguagem de programação interpretada, voltada principalmente para crianças e aprendizes em programação. O Logo implementa a filosofia construtivista.

Page 2: Aula 01 - Introdução a Orientação a Objetos

Alan Kay também observou que o conceito de objetos tinha enorme potencial como uma ferramenta cognitiva: havia uma boa correspondência com a maneira de pensar das pessoas sobre o mundo. Ele percebeu que um substantivo isolado faz aparecer uma imagem concreta na mente das pessoas e um verbo isolado não tem esse efeito. Verbos são propriedades dos substantivos: Garotos correm; cachorro corre; água corre; trem corre. Na orientação a objetos chamamos isso de polimorfismo.

Então, Alan Kay pensou em como construir um sistema de software a partir de agentes autônomos que interagissem entre si, estabelecendo os seguintes princípios da orientação a objetos:

Qualquer coisa é um objeto. Objetos realizam tarefas através da requisição de serviços. Cada objeto pertence a uma determinada classe. Uma classe agrupa objetos similares. Uma classe possui comportamentos associados ao objeto. Classes são organizadas em hierarquias.

Por fim, Cobra (2009) conclui dizendo que portando, depois de reunir conceitos de diversas áreas do conhecimento e com base em sua experiência como pesquisador, Alan Kay criou o paradigma de análise e programação mais eficiente da atualidade. Conhecer a origem da orientação a objetos ajuda a compreender como utilizá-la no desenvolvimento de projetos de software.

1.2 – Vantagens da programação orientada a objetosDe acordo com [FURLAN], o enfoque tradicional de modelagem para a construção de sistemas de informação baseia-se na compreensão desse sistema como um conjunto de programas que, por sua vez, executam processos sobre dados. O enfoque de modelagem por objetos, vê o mundo como uma coletânea de objetos que interagem entre si, apresentam características próprias que são representadas pelos seus atributos (dados) e operações (métodos ou serviços).

A Figura 1 apresenta um enfoque de um sistema estruturado e outro baseado em objeto.

Figura 1 – Enfoque baseado em sistema versus enfoque baseado em objeto

Resumidamente, a mudança de enfoque (entre estruturado e orientado a objetos) é justificada pelo fato de que objetos existem na natureza muito antes de haver qualquer tipo de aplicação deles pelo negócio. Equipamento, pessoas, minerais, petróleo, etc., existem por si só e apresentam características peculiares representadas pelos seus atributos e, adiante, pelo seu comportamento no mundo real.

Este tipo de abordagem, oferece os seguintes benefícios:

Manter a modelagem do sistema, e em decorrência, sua automação o mais próximo possível de uma visão conceitual do mundo real;

Page 3: Aula 01 - Introdução a Orientação a Objetos

Servir de base à decomposição e modelagem do sistema nos dados, que é o elemento mais estável de todos aqueles que compõem um sistema de informação e

Oferecer maior transparência na passagem da fase de modelagem para a de construção através da introdução de detalhes, não requerendo uma reorganização do modelo.

Um aspecto interessante da teoria de objetos é a sua característica intríseca de analisar o mundo como ele é, permitindo organizar resultados de maneira mais fácil e natural. Procura representar o mundo real como o vemos, pessoas, lugares e coisas existentes que se comportam como objetos e que possuem características próprias de atributos e operações. Por definição, a teoria de objetos espelha o mundo de forma mais simples do que modelos algorítmicos ou estruturados.

Ainda, [FURLAN] apresenta uma forma de transformar a interpretação do mundo real, em uma abstração na perspectiva Orientada a Objetos. A Tabela 1 apresenta esta forma de interpretação.

Capacidade Perspectiva Humana Perspectiva OOClassificação Percepção de semelhanças entre coisas

atribuindo-lhes uma designação genérica. Exemplo: Jazz, Blues, Rock n’Roll, Bossa Nova, etc., são estilos musicais.

Generalização e especificação em um relacionamento de herança entre pai e filho.

Composição Elemento cuja vida está intimamente relacionada a um outro elemento Exemplo: um braço no corpo humano.

Agregação

Comunicação Troca de mensagens entre objetos. Exemplo: um indivíduo pergunta o nome a outro indivíduo.

Mensagem

Consciência A constatação da existência de coisas baseada na consciência, indução intelectual e nas características observáveis pelos sentidos humanos de elementos da natureza, suas propriedades e comportamento. Exemplo: uma árvore, um animal, um automóvel, uma fórmula matemática, um ruído, um odor.

Objetos, suas propriedades (atributos) e comportamentos (métodos) inerentes.

Relacionamento Observação de correlações entre coisas físicas e lógicas. Exemplo: um indivíduo tem vários documentos.

Associação e papel da associação.

Tabela 1 – Interpretação do mundo real, em uma abstração na perspectiva Orientada a Objetos

Finalizando esta parte introdutória da Teoria da Orientação a Objetos, é apresentado na Tabela 2, as principais palavras chaves encontradas neste paradigma.

Palavra-chave Breve definição Exemplo

Page 4: Aula 01 - Introdução a Orientação a Objetos

Atributo Característica particular de uma ocorrência da classe

Indivíduo possui nome, sexo, data de nascimento.

Classe Agrupamento de objetos similares que apresentam os mesmos atributos e métodos.

Indivíduo, caracterizando as pessoas do mundo.

Encapsulamento Combinação de atributos e métodos em uma classe.

Atributo: data do nascimento.Método: cálculo da idade a partir da data do nascimento.

Especificação Atributos e métodos diferentes de uma subclasse, acrescentando ou substituindo características herdadas da classe pai.

Subclasses [Organização] e [indivíduo] acrescentam atributos e métodos distintos da superclasse.

Estado Situação de um objeto em um dado instante de tempo.

Emitindo nota fiscal.

Evento Uma ocorrência significativa no mundo real que deve ser tratada.

Pedido tomado, entrega efetuada, ponto de solicitação de material atingido.

Generalização Atributos e operações comuns compartilhados por classes.

Superclasse [Parte] ou [Pessoa] como generalização das subclasses [Organização] e Indivíduo.

Herança Compartilhamento pela subclasse dos atributos e operações da classe pai.

Subclasse Eucalipto compartilha atributos e operações da classe Árvore.

Instância de classe Uma ocorrência específica de uma classe. É o mesmo que objeto.

Uma pessoa, uma organização, um equipamento, uma localização geográfica.

Mensagem Uma solicitação entre objetos para invocar certo método.

Informar a idade da pessoa.

Objeto Elemento do mundo real (natureza). Sinônimo de instância de classe.

Uma pessoa: “Fulano de Tal”.

Métodos (serviços) Lógica contida em uma classe para designar-lhe um comportamento.

Cálculo da idade de uma pessoa em uma classe.

Polimorfismo (sobrecarga) Habilidade para usar a mesma mensagem para invocar comportamentos diferentes do objeto.

Chamada da operação: “calcularSaldo” de correntista. Invoca as derivações correspondentes para cálculo de saldo de poupança, renda fixa, fundo de ações, etc.

SubClasse Característica particular de uma classe. Classe Árvore -> subclasses Ipê, Jacarandá, Eucalipto, etc.

Tabela 2 – Principais palavras chaves na Teoria da Orientação a Objetos.

1.3 – Exercícios

Page 5: Aula 01 - Introdução a Orientação a Objetos

1. O programa apresentado a seguir está escrito em três paradigmas diferentes de programação.

a) Paradigma semi-estruturado

b) Paradigma estruturado

c) Paradigma orientado a objetos

Page 6: Aula 01 - Introdução a Orientação a Objetos

Baseado nos paradigmas apresentados anteriormente responda às perguntas a seguir:

a) As atividades que os três programas fazem são as mesmas?b) Quais são as diferenças entre os três paradigmas?

Leitura/Atividade Obrigatória:

Realizar um resumo (1 página de caderno pautada - frente e verso), por escrito em caneta azul ou preta e individual.

Capítulo 1 - Introdução à programação orientada a objetos do livro:

SANTOS, Rafael. Introdução à programação orientada a objetos usando Java / Rafael Santos. - Rio de Janeiro: Elsevier, 2003 - 12ª reimpressão.

Valor 1,0 ponto na prova do 1º bimestre.

Page 7: Aula 01 - Introdução a Orientação a Objetos

Referencial Bibliográfico

COBRA, Alexandre. Origem da Orientação a Objetos. WebGoal - Software simples para empresas grandes, 2009. Acessado em <14/01/13>. Disponível em < http://www.webgoal.com.br/origem-da-orientacao-a-objetos/ >.

DAVID, Marcio Frayze. Programação Orientada a Objetos: uma introdução. Guia do Hardware.net, 2007. Acessado em <14/01/2013>. Disponível em <http://www.hardware.com.br/artigos/programacao-orientada-objetos/>.

BOOCH, Grady. UML guia do usuário / Grady Booch, James Rumbaugh, Ivar Jacobson ; tradução de Fábio Freitas da Silva. - Rio de Janeiro : Campus, 2000.

SANTOS, Rafael. Introdução à programação orientada a objetos usando Java / Rafael Santos. - Rio de Janeiro : Elsevier, 2003 - 12ª reimpressão.

FURLAN, José D. Modelagem de Objetos através da UML – the Unified Modeling Language – São Paulo : Makron Books, 1998.