JavaScript Orientado a Objectos

Documentos relacionados
Linguagem de Programação JAVA. Técnico em Informática Professora Michelle Nery

Capítulo 8. Introdução UML

Prof. Jhonatan Fernando

Membros de classe e de instância. PARTE III: Java e OO - detalhes. Exemplo 1: método. Exercício. Exemplo 1 corrigido

Aula 2. Objetivos. Encapsulamento na linguagem Java; Utilizando a referência this.

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

3 Classes e instanciação de objectos (em Java)

Implementando uma Classe e Criando Objetos a partir dela

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

Capítulo 4. Packages e interfaces

Orientação a Objetos e a Linguagem Java

Programação por Objectos. Java

Programação por Objectos. Java

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

Revisão da linguagem Java

Programação de Computadores - I. Profª Beatriz Profº Israel

Exemplo 1. Um programa que cria uma instância de uma classe que herda da classe Frame

8 Classes Internas. Desenvolvimento OO com Java. Vítor E. Silva Souza

Prof. Me. Marcos Echevarria

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

Análise e Projeto Orientados por Objetos

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

Multithreading. Programação Orientada por Objectos com Java. Ademar Aguiar. MRSC - Programação em Comunicações

Técnicas de Programação II

HTML Básico Formulários. Matheus Meira

Universidade da Beira Interior. Sistemas Distribuídos

Programação Orientada a Objetos (DPADF 0063)

Programação por Objectos. Java

A Introdução à Programação Orientada a Objetos. Programação e Sistemas de Informação

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

Análise de Programação

Computação II Orientação a Objetos

Linguagem de Programação Orientada a Objeto. Introdução a Orientação a Objetos Professora Sheila Cáceres

Classes Abstratas e Interfaces

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

Programação com Acesso a BD. Programação com OO Acesso em Java

Computação II Orientação a Objetos

Java 2 Standard Edition Como criar classes e objetos

UNIP - Ciência da Computação e Sistemas de Informação. Estrutura de Dados. AULA 6 Filas

Programação Orientada a Objetos. Encapsulamento

Exercício 1 : As classes abaixo serão utilizadas neste exercício: public class Ponto { int x; int y; public Ponto(int x, int y){ this.

Encapsulamento de Dados

Módulo 02 Programação Orientada a Objetos. Última atualização: 07/06/2010

Modulo IIa Extra: Object

Curso Adonai QUESTÕES Disciplina Linguagem JAVA

Programação Orientada a Objetos em Java

Sintaxe Geral Tipos de Dados. Prof. Angelo Augusto Frozza, M.Sc.

Programação Orientada por Objetos

Modificador static e Pacotes. Alberto Costa Neto DComp - UFS

Encontrando falhas em aplicações web baseadas em flash. Wagner Elias Gerente de Pesquisa e Desenvolvimento Conviso IT Security

2. O gerador de código estende DepthFirstAdapter implementando a interpretação que gerará código Jasmin a partir de Smallpascal.

insfcanceof new public switch transient while byte continue extends for int null

ESQUEMA AULA PRÁTICA 1 Familiarização com o Ambiente de Desenvolvimento Eclipse Introdução à Linguagem de Programação JAVA

Técnicas de Programação Avançada TCC Profs.: Anselmo Montenegro Conteúdo: Introdução à Orientação a Objetos

Keeper of Knowledge. Capítulo 2 Classes em Java

Paradigmas da Programação PPROG. Linguagem JAVA. Interfaces. (Livro Big Java, Late Objects Capítulo 9) Nelson Freire (ISEP DEI-PPROG 2013/14) 1/33

ESQUEMA AULA PRÁTICA 1 Familiarização com o Ambiente de Desenvolvimento NetBeans Introdução à Linguagem de Programação JAVA

Tabelas (arrays) (vetores, matrizes, etc) Algoritmos de pesquisa Algoritmos de ordenação

Objetivos do mini curso. Conhecer a linguagem. Noção de programação utilizando Python. Aprender o báscio.

Programação Orientada a Objetos C ++ 4 Conceitos de OO em Java Classes e Objetos

EXERCÍCIOS SOBRE ORIENTAÇÃO A OBJETOS

Desenvolvimento OO com Java Orientação a objetos básica

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

Algoritmos e Programação II. Sobrecarga

ÇÃO COM OBJECTOS PROGRAMAÇÃ. Programação com Objectos. Programação com Objectos TUDO É UM OBJECTO TUDO É UM OBJECTO ÍNDICE.

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

Grupo I [6,6v] Responda com os valores que se observam depois da chamada acontecer. 1 Falta na mensagem de resposta. Valor retornado na chamada

Sistemas Distribuídos

Organizando Classes em Pacotes. Profa. Thienne Johnson EACH/USP

Programação Orientada a Objetos C++

Objetos Distribuídos - Programação Distribuída Orientado a Objetos. Luiz Affonso Guedes

Programação Avançada

NetBeans. Conhecendo um pouco da IDE

Universidade da Beira Interior Cursos: Matemática /Informática e Ensino da Informática

Introdução à Programação com Classes em C++

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

Prova de Java. 1) Copie o programa abaixo no eclipse e complete-o, utilizando os conceitos aprendidos durante o curso. (4 pontos)

Java Threads. Introdução

Panorâmica geral sobre PHP. PHP é uma linguagem que permite fazer. um ficheiro em PHP contem código PHP misturado com HTML.

Java. Marcio de Carvalho Victorino

Programação Concorrente em java - Exercícios Práticos Abril 2004

Invocação Remota MC704

JavaScript 2.0X X

public Agenda() { compromissos = null; } public int getnumerodecompromissos() { if (compromissos==null) return 0; else return compromissos.

UML: Diagrama de Casos de Uso, Diagrama de Classes

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

Capítulo 3. Programação por objectos em Java

Chamadas Remotas de Procedimentos (RPC) O Conceito de Procedimentos. RPC: Programa Distribuído. RPC: Modelo de Execução

Itens estruturais/caso de uso. Itens estruturais/classe ativa. Itens estruturais/componente. Itens estruturais/artefatos. Itens comportamentais

Programação de Computadores e Robocode.

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

Programação Visual TIC - 3PA. Lista de Exercícios 02

Curso de Java. Orientação a objetos e a Linguagem JAVA. TodososdireitosreservadosKlais

Programação com Objectos. Processamento de Dados I. 4. Classes Abstractas

Orientação a Objetos com Java

Módulo 07 Características Avançadas de Classes

11/20/10. Resoluções: Teste de Áudio. Não suporto esses malucos de TI. Só inventam despesas. Não acredito que teremos que pagar por mais softwares.

Programação Na Web. Linguagem Java Parte II. break com o nome do bloco. Sintaxe. Nome do bloco. Termina o bloco. António Gonçalves ...

Java Básico. Matrícula de Alunos. Marco Antonio, Arquiteto de Software TJDF Novembro/2005

Transcrição:

JavaScript Orientado a Objectos O bom, o mau e uma solução. Artur Ventura

Índice JavaScript JavaScript Orientado a Objectos Visibilidade Herança Problemas JSC Definição Instanciação Herança Métodos de classe Protocolos Problemas

JavaScript Criado em 1995 na Netscape (originalmente chamava-se LiveScript) Standardizado através de um dialecto chamado ECMAScript Actualmente existe um motor de JavaScript em qualquer browser. Dinâmica, fracamente tipificada (duck typing), baseada em protótipos, com funções de primeira classe. Inspirado por Self, C, Scheme, Perl, Python, Java.

JavaScript Exemplo

JavaScript function Foo (x,y){ var arry = [1,2,3]; var hash = { bing:'bang', ting:"tong" ; hash.bing = hash['bing']; var f = function (){ return arguments[0] ; x = f(x); for(var i=0; i<arry.length; i++){ arry[i]++ for(i in hash){ var value = hash[i]; return x + y;

JavaScript Orientado a Objectos Uma classe cria-se definindo um object, chamada protótipo que representa o estado inicial das instancias Uma instancia dessa classe é um copia desse object. Os métodos são elementos chaves desse object.

JavaScript Orientado a Objectos function Rectangle(w,h){ this.width = w; this.height = h; var x = new Rectangle(10,10);

JavaScript Orientado a Objectos var x = new Rectangle(10,10); Rectangle.prototype.getArea = function (){ return this.height * this.width; x.getarea()

JavaScript Orientado a Objectos Visibilidade Não existe qualquer tipo controlo de visibilidade na linguagem. No entanto é possível simular o comportamento da visibilidade privada através de ambientes.

JavaScript Orientado a Objectos Visibilidade function ImmutableRectangle(w, h) { function privatearea() { return w * h; this.getwidth = function() { return w; this.getheight = function() { return h; this.getarea = function() { return privatearea();

JavaScript Orientado a Objectos Herança A herança é simulada copiando o protótipo da classe pai para a filha.

JavaScript Orientado a Objectos Herança function PositionedRectangle(x, y, w, h) { Rectangle.call(this, w, h); this.x = x; this.y = y; PositionedRectangle.prototype = new Rectangle();

JavaScript Orientado a Objectos Problemas Hacks de linguagem Single Namespace Falta de programação estruturada

JavaScript Orientado a Objectos Problemas var i = 0 racio = function (){ return 1 + i;

JavaScript Orientado a Objectos Problemas var i = 0 racio = function (){ return 1 + i; >> racio() 21 //????? >> i 0 >> racio.tostring() function (){ return 1 + i; >>

JavaScript Orientado a Objectos Problemas var i = 0 racio = function (){ return 1 + i; >> racio() 21 //????? >> i 0 >> racio.tostring() function (){ return 1 + i; >> racio = (function (){ var i=20; return function (){ return 1 + i; )()

JavaScript Orientado a Objectos Problemas var mypackage = (function (){ return { i: 0, racio: function(){ return 1 + this.i; )()... var racio = mypackage.racio var x = racio() var y = racio() var z = racio() alert (x + " " + y + " " + z);

JavaScript Orientado a Objectos Problemas var mypackage = (function (){ return { i: 0, racio: function(){ return 1 + this.i; )()... var racio = mypackage.racio var x = racio() var y = racio() var z = racio() alert (x + " " + y + " " + z); NaN NaN NaN

Extensão ao JavaScript para permitir programação OO estruturada. Criar mecanismos de isolamento de código em pacotes e classes. Introspecção e de Intercepção mantendo o código organizado. Herança múltipla (baseada em protótipos). Acordos de implementação (interfaces do Java, ou protocolos do Objective-C). Simplificar o uso de RMI.

.jsc.jsc.jsc

.jsc.jsc Cada ficheiro representa uma classe..jsc

compilação.jsc.jscx.jsc.jscx.jsc.jscx

compilação linkagem.jsc.jscx.jsc.jscx imagem de base de dados ficheiro JavaScript para Browser JSC Virtual Machine.jsc.jscx

Definição package UI.Component; class Rectangle{ slots:[height,width], Rectangle: function (w,h){ this.setheight(h); this.setwidth(w);, getarea: function (){ return this.getheight() * this.getwidth();

Definição package UI.Component; class Rectangle{ slots:[height,width], Rectangle: function (w,h){ this.setheight(h); this.setwidth(w);, getarea: function (){ return this.getheight() * this.getwidth();

Definição package UI.Component; class Rectangle{ slots:[height,width], Rectangle: function (w,h){ this.setheight(h); this.setwidth(w);, getarea: function (){ return this.getheight() * this.getwidth();

Definição package UI.Component; class Rectangle{ slots:[height,width], Rectangle: function (w,h){ this.setheight(h); this.setwidth(w);, getarea: function (){ return this.getheight() * this.getwidth();

Definição package UI.Component; class Rectangle{ slots:[height,width], Rectangle: function (w,h){ this.setheight(h); this.setwidth(w);, getarea: function (){ return this.getheight() * this.getwidth();

Instanciação Class("UI.Component.Rectangle").create(10,10)

Herança package UI.Component; class PositionedRectangle extends UI.Component.Rectangle{ slots:[x,y], PositionedRectangle: function (x,y,w,h){ Class("UI.Component.Rectangle").init(this,w,h); this.setx(x); this.sety(y);

Herança package UI.Component; class PositionedRectangle extends UI.Component.Rectangle, UI.mixin.RectangleDimensions{ slots:[x,y], PositionedRectangle: function (x,y,w,h){ Class("UI.Component.Rectangle").init(this,w,h); this.setx(x); this.sety(y);

Métodos de classe Estes métodos são invocados através da instancia da classe. Conceito semelhante aos métodos static do Java

Métodos de classe package Main; class App { static:{ main: function (args){...

Protocolos Os protocolos garantem a existência de um conjunto de métodos. Os métodos nos protocolos podem ser declarados como obrigatórios, que obrigam a classe a implementar esses métodos, ou facultativos em que é garantido a existência de um método caso um não seja declarado.

Protocolos package UI.Component; protocol Draggable { element: true, eventlistener: false

Problemas Variáveis globais. function Foo(){ var local = 1; global = 1; Valor por omissão de um slot. class Foo{ slots:{ aslot:{ getter:"getslot", setter:"setit", default:1, anotherslot: { default: Class("Baz.Bing").create(1,2)

Problemas Separação de classe / metaclasse.

Demo

Questões?