Orientação a Objetos. Thiago Messias Evangelista UESC Universidade Estadual de Santa Cruz Version 2012-11-08. 1 LibreOffice Productivity Suite



Documentos relacionados
Análise e Projeto Orientados por Objetos

Programação Orientada a Objetos C++

Computação II Orientação a Objetos

UM ESTUDO PARA A EVOLUÇÃO DO PHP COM A LINGUAGEM ORIENTADA A OBJETOS

Um objeto é uma instância de uma 'classe'. Você define uma classe utilizando o trecho de código abaixo;

PROGRAMAÇÃO ORIENTADA A OBJETO EM PHP

Programação Orientada a Objetos Prof. Rone Ilídio UFSJ/CAP

1 INTRODUÇÃO 1.1 CONCEITO DE PARADIGMAS DE LINGUAGEM DE PROGRAMAÇÃO PARADIGMAS DE LINGUAGEM DE PROGRAMAÇÃO

FUNDAMENTOS DA ORIENTAÇÃO A OBJETOS- REVISÃO

Implementando uma Classe e Criando Objetos a partir dela

EXERCÍCIOS SOBRE ORIENTAÇÃO A OBJETOS

ORIENTAÇÃO A OBJETOS. Professora Lucélia Oliveira

Linguagens de Programação Aula 10

3.1 Definições Uma classe é a descrição de um tipo de objeto.

Programação Orientada a Objeto

Programação Estruturada. Programação Estruturada. Idéias Básicas da Programação Estruturada

Análise e Desenvolvimento de Sistemas ADS Programação Orientada a Obejeto POO 3º Semestre AULA 03 - INTRODUÇÃO À PROGRAMAÇÃO ORIENTADA A OBJETO (POO)

Programação Orientada a Objetos (DPADF 0063)

Programa Analítico. Introdução. Origens da programação Orientada a Objetos. Paradigma procedural. Paradigma Orientado a Objetos.

Linguagens de. Aula 01. Profa Cristiane Koehler

Material de Apoio 5. int getres() { return res; O que estas classes possuem em comum? 1) 2) 3)

Análise e Projeto Orientado a Objetos

Prof. Jhonatan Fernando

Orientação a Objeto e UML Questões 2014 Prof. Felipe Leite

UNIVERSIDADE FEDERAL DE SANTA MARIA CENTRO DE TECNOLOGIA AULA 16 PROFª BRUNO CALEGARO

Capítulo 8. Introdução UML

UML: Diagrama de Casos de Uso, Diagrama de Classes

2 Engenharia de Software

Programação Orientada a Objetos (DPADF 0063)

Introdução ao Paradigma Orientado a Objetos. Principais conceitos

Paradigmas de Programação

Histórico da Orientação a Objetos Ciclo de vida de Desenvolvimento de SW

PROGRAMAÇÃO AVANÇADA -CONCEITOS DE ORIENTAÇÃO A OBJETOS. Prof. Angelo Augusto Frozza, M.Sc. frozza@ifc-camboriu.edu.br

Programação Orientada a Objetos

2ª Lista de Exercícios Orientação a Objetos

Orientação a Objetos

Análise e Design OO com UML

Programação Orientada a Objetos em Java

POO Programação Orientada a Objetos. Classes em Java

Programação Orientada a Objetos e Java - Introdução. Carlos Lopes

ESTENDENDO A UML PARA REPRESENTAR RESTRIÇÕES DE INTEGRIDADE

MODELAGEM E SIMULAÇÃO

ATRIBUTOS PRIVADOS 6. ENCAPSULAMENTO MÉTODOS PRIVADOS MÉTODOS PRIVADOS

Computação II Orientação a Objetos

Pontifícia Universidade Católica de São Paulo Departamento de Ciência da Computação

Introdução a Java. Hélder Nunes

Técnicas de Programação II

PCS LABORATÓRIO DE PROGRAMAÇÃO ORIENTADA A OBJETOS PARA A ENGENHARIA ELÉTRICA

UNIP UNIVERSIDADE PAULISTA INSTITUTO DE CIÊNCIAS EXATAS E TECNOLOGIA (ICET) CURSO DE CIÊNCIAS DA COMPUTAÇÃO. O Paradigma da Orientação a Objeto

Métodos de Construção de Software: Orientação a Objetos. Mestrado em Ciência da Computação 2008 Profa. Itana Gimenes

Programação Orientada a Objetos OOP. IFES Campus Vitória Engenharia Elétrica Professor: Danilo A. Silva

Algoritmos e Programação II. Sobrecarga

Python Intermediário. terça-feira, 4 de agosto de 15

Programação Orientada a Objetos. Prof. Diemesleno Souza Carvalho diemesleno@iftm.edu.br

Ficha da Unidade Curricular (UC)

Parte I. Orientação a objetos no PHP. Contato: <lara.popov@ifsc.edu.br> Site:

Herança. Algoritmos e Programação II. Aula 5 Herança

Programação por Objectos. Java

Organização de Computadores Software

CONCEITOS DE LINGUAGEM DE PROGRAMAÇÃO CARACTERÍSTICAS. João Gabriel Ganem Barbosa

Programação Orientada a Objetos: Lista de exercícios #1. Bruno Góis Mateus

MODELAGEM VISUAL DE OBJETOS COM UML DIAGRAMA DE CLASSES.

Linguagem de Programação III Herança

Introdução à Engenharia de Computação

Desenvolvimento estruturado versus orientado a objetos.

UNIVERSIDADE PRESBITERIANA MACKENZIE FACULDADE DE COMPUTAÇÃO E INFORMÁTICA

Curso de PHP. FATEC - Jundiaí. A programação orientada a objetos (object-oriented oriented programming

Programação Orientada a Objetos em Java. Herança

7 RTTI e Interfaces. Desenvolvimento OO com Java. Vítor E. Silva Souza (vitorsouza@inf.ufes.br)

Herança e Polimorfismo de Inclusão

Programação por Objectos. Java

Aula 3 Objeto atual com referencia THIS e Classes com Herança

Orientação a Objetos com Java

UML Aspectos de projetos em Diagramas de classes

PHP INTRODUÇÃO CLASSES E OBJETOS

Paradigmas de Linguagens de Programação

3. PARADIGMA ORIENTADO A OBJETOS

ORGANIZAÇÃO DE COMPUTADORES MÓDULO 1

Curso Java Starter. 1

QUESTÕES PARA ESTUDO DIAGRAMA DE CLASSE

LINGUAGENS E PARADIGMAS DE PROGRAMAÇÃO. Ciência da Computação IFSC Lages. Prof. Wilson Castello Branco Neto

Modelagem de Processos. Prof.: Fernando Ascani

Orientação a Objetos

04/07/2015 UML. Prof. Esp. Fabiano Taguchi DEFINIÇÃO DE REQUSIITOS

Programação Orientada a Objetos Herança Técnico em Informática. Prof. Marcos André Pisching, M.Sc.

Programação Estruturada e Orientada a Objetos. Fundamentos Orientação a Objetos

PHP Orientado a Objetos Análise e Desenvolvimento de Sistemas Prof. Marcelo da Silveira Siedler siedler@gmail.com

Bibliografia. Desenvolvimento Orientado a Objetos. Introdução. Bibliografia. O que você vê?

Esta dissertação apresentou duas abordagens para integração entre a linguagem Lua e o Common Language Runtime. O objetivo principal da integração foi

Análise de Sistemas Orientados a Objetos Prof. Tiago Eugenio de Melo tiago@comunidadesol.org.

Introdução à Programação. Adair Santa Catarina Curso de Ciência da Computação Unioeste Campus de Cascavel PR

Linguagens de Programação. Introdução. Carlos Bazilio

AULA 4 VISÃO BÁSICA DE CLASSES EM PHP

Começando com Ruby on

Orientação a Objetos

Programação Orientada a Objetos Classes Abstratas Técnico em Informática. Prof. Marcos André Pisching, M.Sc.

Computação II - Java Prof. Adriano Joaquim de Oliveira Cruz Aula Prática - Herança, Polimorfismo e Construtores

Influenciam nossa percepção; ajudam-nos a organizar e a coordenar a Classes estimulam projeto centrado em dados:

Transcrição:

Orientação a Objetos Thiago Messias Evangelista UESC Universidade Estadual de Santa Cruz Version 2012-11-08 1

Abordagens História; ; Benefícios / Limitações; Referências; 2

História Tudo tem um começo... 3

História O.O. não é uma idéia nova - 1960s; Alan Kay, criador do termo: Programação Orientada a Objetos ; Ivan Sutherland(Computação Gráfica) Já utilizara no glossário do Sketchpad(1963) definições de objeto e instância Kristen Nygaard e Ole-Johan Dahl Simula 67 60's; Primeira linguagem a realmente utilizar os conceitos de O.O.; 4

História Simula 67 60's Uma revisão melhorada do Simula I; Introduzia: Noções de classe, instância e objetos; Subclasses; Métodos Virtuais; Co-rotinas; Possuia um garbage collection que foi emprestado da linguagem funcional Lisp; Usada para Modelagem Física; Utilizada para a criação de modelos para estudo e melhora do movimento de navios e de seus conteúdos através dos portos de carga; Mais tarde iria influenciar linguagens como: Smalltak, Object Pascal e C++; 5

História Daí pra frente, surgem: Smalltalk; C++; Delphi; C#; Python; Ruby; Java; Ada; 6

- E agora? O que preciso saber para programar O.O.? - Aluno do 3º semestre de Computação 7

Tipos Abstratos de Dados: Propoe reduzir a informação necessária para a criação de um algoritmo através da abstração das variáveis envolvidas em uma única entidade fechada; Proporciona: Melhor compreensão dos algoritmos; Os projetos puderam alcançar alta complexidade mantendo-se a legibilidade; Conceito altamente recomendado; Posteriormente, essa metodologia foi incorporada à LP: A conhecida Orientação a Objetos 8

Classe: Define: Um tipo de coisa (Objeto / Instância); O que esses objetos possuem como características(atributos); O tipo de ações que esses objetos são capazes de realizar(métodos); Objeto: Observe que uma classe não tem vida, ela é um conceito; Já os Objetos(felinos, humanos... Da classe Mamíferos) poussem; 9

Atributos: É o trecho da instância, onde estão especificados (quantativa ou qualitativamente) as características dele; Seguindo o exemplo, poderíamos ter: Classe Account Objeto Xico's Account Atributos Holder: Xico Bruno Number: 64.123-1 Credit Line: Banco da Praça Balance: + R$ 1053,73 10

Métodos: Serão as ações que poderão ser excutadas no/com objetos da classe; Eles serão importantes para o Encapsulamento(Métodos Get/Set); Construtores / Destrutores: São os responsáveis por incializar os atributos do objeto que está sendo instanciado; Em algumas linguagens é necessário que sejam criados destrutores para destruir instâncias; 11

Encapsulamento: Consiste na separação de aspectos internos e externos de um objeto; Os famosos Modificadores de Acesso; Exemplo: você não precisa conhecer os detalhes dos circuitos de um telefone para utilizá-lo. A carcaça do telefone encapsula esses detalhes, provendo a você uma interface mais amigável (os botões, o monofone e os sinais de tom); Isso permite que o programador possa determinar a forma como os dados poderão ser vistos e modificados; 12

Encapsulamento: Public: O modificador public deixará visível a classe ou membro para todas as outras classes, subclasses e pacotes do projeto Java. Private: O modificador private deixará visível o atributo apenas para a classe em que este atributo se encontra. Protected: O modificador protected deixará visível o atributo para todas as outras classes e subclasses que pertencem ao mesmo pacote. A principal diferença é que apenas as classes do mesmo pacote tem acesso ao membro. O pacote da subclasse não tem acesso ao membro. Padrão: Por padrão, a linguagem Java permite acesso aos membros apenas ao pacote em que ele se encontra. 13

Encapsulamento: Em Java, podemos encontrar a seguintes visiblidades: Modificador Classe Pacote Subclasse Global Public sim sim sim sim Protected sim sim sim não Vazio (Padrão) sim sim não não Private sim não não não 14

Herança: É o mecanismo pelo qual uma classe (sub-classe) pode estender outra classe (super-classe), aproveitando seus comportamentos (métodos) e variáveis possíveis (atributos). Super-Classe: Mamífero Sub-Classe: Humano O mesmo se aplica na Herança Múltipla, contudo não são todas as linguagens que implementam totalmente essa funcionalidade; 15

Polimorfismo: Poli(Muitas) + Morfa(Forma); Existem 4 tipos, contudo nem todas as linguagens O.O. as implementam; Polimorfismo Universal Paramétrico Ad-Hoc Inclusão Sobrecarga Coerção 16

Polimorfismo: Universal: Trabalha potencialmente num conjunto infinito de tipos de modo disciplinado; Possui duas formas: paramétrico e inclusão; Ad-Hoc Não existe um modo único e sistemático de determinar o tipo de resultado de uma função em termos dos tipos dos seus argumentos de entrada; É uma forma limitada de polimorfismo; Possui duas formas: coerção e sobrecarga; 17

Polimorfismo: Universal: Paramétrico: Um mesmo objeto pode ser utilizado uniformemente como parametro em diferentes contextos sem necessidade de alteração; Métodos com essas características (chamados de métodos genéricos); O PHP, por exemplo, não requer isso, já que não utiliza a tipagem explícita: $var pode receber uma string, tornando-se no tipo string e em seguida receber um inteiro, tornando-se um em um tipo inteiro; Inclusão: Se uma classe-mãe Brinquedo se especializa em uma classe-filha Carro, uma outra classe ControleRemoto, que possui um atributo do tipo Brinquedo poderá reconhecer uma instancia da classe-filha; Exemplo a seguir: -> 18

Polimorfismo: Universal: Inclusão: Exemplo: 19

Polimorfismo: Ad-Hoc: Coerção: Meio utilizado para contornar a rigidez dos tipos monomórficos(algol68); Existe um mapeamento interno entre tipos; Exemplo: Se o operador soma é definido como tendo 2 parâmetros reais. Um inteiro e um real são passados como parâmetros, o inteiro é coargido para um real; Sobrecarga: Permite que um nome de função seja utilizado mais do que uma vez com diferentes tipos de parâmetros Exemplo: Uma função soma pode ser sobrecarregada para operar com dois parâmetros inteiros e dois reais. 20

Interface: É o alicerce da programação modular; Na O.O., a interface de um objeto consiste de um conjuto de métodos que um objeto deve suportar(o que ocorre com o Java); 21

Benefícios / Limitações 22

Benefícios / Limitações Benefícios: Divisão de código um pouco mais lógica e melhor encapsulada do que a empregada nos sistemas não orientados a objetos; Isto torna a manutenção e extensão do código mais fácil e com menos riscos de inserção de bugs; Fácil reaproveitamento de código; Limitações: Dificilmente uma linguagem orientada a objetos obterá um desempenho superior à uma linguagem não orientada a objetos; (Fator Aprendizagem) O programador inciante precisa ter bem estabelecido uma série de conceitos sobre o paradigma; 23

Referências http://www.python-course.eu/object_oriented_programming.php http://en.wikipedia.org/wiki/object-oriented_programming http://en.wikipedia.org/wiki/sketchpad http://www.dca.fee.unicamp.br/cursos/poocpp/node1.html http://www.hardware.com.br/artigos/programacao-orientada-objetos/ http://pt.wikipedia.org/wiki/orienta%c3%a7%c3%a3o_a_objetos http://pt.wikipedia.org/wiki/simula_67 http://pt.wikipedia.org/wiki/tipo_abstrato_de_dado http://www.tiexpert.net/programacao/java/public-private-protected.php http://pt.wikipedia.org/wiki/php#polimorfismo_param.c3.a9trico http://www.metropoledigital.ufrn.br/aulas/disciplinas/poo/aula_12.html 24

Obrigado Dúvidas? Sugestões? All text and image content in this document is licensed under the Creative Commons Attribution-Share Alike 3.0 License (unless otherwise specified). "LibreOffice" and "The Document Foundation" are registered trademarks. Their respective logos and icons are subject to international copyright laws. The use of these therefore is subject to the trademark policy. 25