Você está na página 1de 41

Introduo a Orientao a Objetos

Contedo
Paradigmas de desenvolvimento; Conceitos Fundamentais; UML; Exemplos; Bibliografia;

Paradigmas de desenvolvimento
O termo Objeto surgiu em trabalhos do MIT, na dcada de 50, no ambiente do grupo de Inteligncia Artificial. Formalizao do termo na dcada de 60, atravs da linguagem Simula 67 Noruega; 1970 Linguagem SmallTalk, Xerox.

Paradigmas de desenvolvimento
Segundo Thomas Kuhn, na obra The Structure of Scientific Revolution, um paradigma : O conjunto de teorias, padres e mtodos que, juntos, representam um modo de organizar o conhecimento; Em Engenharia de Software, tambm podemos entender um paradigma como um modelo a ser seguido para a resoluo de um problema.

Paradigmas de desenvolvimento
Durante muitos anos, o Paradigma Estruturado (ou Imperativo) foi o dominante no desenvolvimento de sistemas. Nesse paradigma, os programas so quebrados em funes ou sub-rotinas que acessam e trabalham os dados; Os dados so compartilhados por vrios programas ou sub-rotinas; Linguagens estruturadas: Cobol, Basic, Pascal, C;

Paradigmas de desenvolvimento

Programa Estruturado: a funo principal quebrada em subrotinas que acessam os dados.

Paradigmas de desenvolvimento

Exemplo de Programa em COBOL

Paradigmas de desenvolvimento Paradigma Estruturado


Vantagens:
Facilidade de aprendizado; Eficincia para resolver problemas simples; Velocidade de processamento, desempenho;

Desvantagens:
Foca na resoluo imediata, e no no entendimento do problema; Mistura dados e funes no mesmo programa, dificultando o entendimento; Quanto maior o sistema, mais custosa ser a sua manuteno;

Paradigmas de desenvolvimento
Sistemas feitos com a abordagem estruturada eram complexos, caros e improdutivos; O Paradigma Orientado a Objetos surgiu como uma resposta aos problemas do Paradigma Estruturado e tambm como uma evoluo dos processos de desenvolvimento de sistemas;

O Paradigma Orientado a Objetos

Conceitos Fundamentais - Introduo


O Paradigma Orientado a Objetos pressupe que o mundo compostos por objetos, onde um objeto uma entidade que executa aes (Comportamento), possui caractersticas (Estado), e se comunicam entre si; Nesse paradigma, objetos do mundo real so abstrados e modelados no universo computacional a fim de comporem uma soluo de software para um determinado problema; Objetos podem ser tanto entidades fsicas (uma pessoa, um veculo, mquinas) quanto entidades abstratas (uma formula matemtica, uma conta corrente, direitos autorais);

Conceitos Fundamentais - Introduo


Vantagens:
Reaproveitamento de cdigo; Melhor organizao; Facilidade em gerenciar o ciclo de vida do software; Mais facilidade me encontrar bugs;

Desvantagens:
Maior curva de aprendizado; Falta de embasamento terico pode comprometer o software;

Linguagens Orientadas a objeto: C++, Java, Python, C#, Ruby;

Conceitos Fundamentais - Introduo


Edward Yourdon, professor do MIT, define o uso da orientao objeto da seguinte maneira:
Um sistema construdo usando um mtodo orientado e objetos aquele cujos componentes so partes encapsuladas de dados e funes, que podem herdar atributos e comportamentos de outros componentes da mesma natureza, e cujos componentes comunicam-se entre si por meio de mensagens.(Yourdon ,1994)

Conceitos Fundamentais
Abstrao; Objetos e Classes; Instanciao; Encapsulamento; Mensagens/Relaes; Herana; Polimorfismo;

Conceitos Fundamentais - Abstrao


Consiste em capturar as caractersticas essenciais de uma entidade, descartando as informaes irrelevantes e concentrando-se no que importante para a soluo do problema; Exemplo: ao modelar o objeto Correntista para um sistema bancrio, podemos descartar as caractersticas fsicas como cor da pele, cor dos olhos, cor do cabelo,peso, altura, e focar nas caractersticas essenciais para o sistema: nome, endereo, idade, salrio.

Conceitos Fundamentais Objetos


Um objeto qualquer representao abstrata de uma entidade do mundo real; Suas caractersticas so chamadas de atributos; Seus comportamentos so chamados de mtodos ou operaes; Podem ser classificados por categorias ou classes; Podem interagir uns com os outros atravs de mensagens; Objetos tambm podem possuir um estado. Exemplo: ativo, inativo, cancelado, andando, negativo;

Conceitos Fundamentais Objetos


Atributos e Mtodos de um objeto Carro.

Conceitos Fundamentais Classes


Uma classe descreve um grupo de objetos com atributos e mtodos similares; Classes podem ser hierarquizadas e categorizadas; Exemplos: Veculos, Mamferos, Pessoas; Veculos: Avio, Automvel, Trem, Navio; Mamferos: Primata, Felino; Carros: Ferrari, Audi, Ford; Classes possuem mtodos de inicializao chamadas construtores; Classes podem possuir mtodos de finalizao chamadas destrutores;

Conceitos Fundamentais Classes


A Classe Ferrari F40 define os atributos e mtodos comuns a todas as Ferraris;

Conceitos Fundamentais Instanciao


Instanciar uma classe produzir um objeto daquela classe; Cada objeto uma instncia de sua classe;

Conceitos Fundamentais Encapsulamento


a capacidade de um objeto de esconder detalhes internos inerentes ao seu funcionamento (atributos e mtodos), que no so relevantes aos outros objetos. O objeto s compartilha as informaes ou servios que foram projetadas para tal; Isso melhora a manuteno do cdigo, permitindo que um objeto seja alterado de modo a no afetar todo o resto do sistema e ainda ajuda a tornar o cdigo mais robusto;

Conceitos Fundamentais Encapsulamento

Conceitos Fundamentais Mensagens/Relaes


Um objeto pode se comunicar com outro objeto unicamente via mecanismo de passagem de mensagens; Um objeto chama um mtodo de outro objeto, solicitando algum servio ou o valor de algum atributo, porm o mtodo chamado precisa ser pblico. Classes so ligadas atravs relacionamentos, que podem ser associaes, dependncias, realizaes.

Conceitos Fundamentais - Herana


As classes podem ser organizadas atravs de uma estrutura de herana hierrquica. Assim, as subclasses podem herdar os atributos e mtodos da superclasse; O mecanismo de herana tambm conhecido como generalizao;

Conceitos Fundamentais - Herana

As classes Ferrari F40 e Ferrari F420 herdam os atributos e mtodos da classe Ferrari

Conceitos Fundamentais Polimorfismo


a capacidade de uma classe mudar um comportamento (mtodo) herdado de sua superclasse; Um mtodo definido na superclasse, porm as classes filhas podem implement-lo de maneiras diferentes;

Conceitos Fundamentais Polimorfismo

Unificando as melhores prticas

UML Unified Modeling Language


UML uma linguagem que unifica as melhores prticas de engenharia de software para fins de modelagem de sistemas; A UML define um conjunto de diagramas que visam ajudar a capturar o problema e modelar a soluo dentro de um domnio especfico;

UML Unified Modeling Language


Dentre os principais digramas da UML temos o diagrama de Casos de Uso, o diagrama de classes, o diagrama de Atividades, entre outros;

Diagrama de Casos de Uso

UML Unified Modeling Language

Modelo de Classes

Diagramas UML e implementao em cdigo Java

Exemplos Classe

Exemplos Herana/Encapsulamento

Exemplos Herana/Encapsulamento
Na classe Ferrari, o mtodo calcularVelocidade privado(-), ou seja outras classes no podem acess-lo diratamente; Calcular a velocidade uma operao que s interessa para a classe Ferrari; Outras classes que desejem se comunicar com a classe Ferrari podem apenas saber a velocidade atravs do mtodo obterVelocidade(), que pblico(+)

Exemplos Polimorfismo

Exemplos Instanciao/relao

Exemplos Instanciao/relao

Bibliografia
UML e C++ Guia Prtico de Desenvolvimento Orientado a Objeto, Richard C. Lee, William M. Tepfenhart, Makron Books, 2002; Desenvolvimento de Software Orientado a Objetos, Ricardo de Almeida Falbo, Julho 2003;

Obrigado!
Andr Luis Almeida Barreto alab.home@gmail.com

Você também pode gostar