Buscar

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

Prévia do material em texto

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: professorglauberbalthazar@yahoo.com.br
- Introdução a Programação Orientada a Objetos
– 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. Haddad (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.
Haddad (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.
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, Haddad (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.
– Vantagens da programação orientada a objetos
De 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;
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 OO
	Classificaçã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çãoa Objetos, é apresentado na Tabela 2, as principais palavras chaves encontradas neste paradigma.
�
	Palavra-chave
	Breve definição
	Exemplo
	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.
– Exercícios
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
Baseado nos paradigmas apresentados anteriormente responda às perguntas a seguir:
As atividades que os três programas fazem são as mesmas?
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.
�
Referencial Bibliográfico
HADDAD, Matheus. 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.
_1218800223.unknown

Continue navegando