Smalltalk Artur Lira Diego Lemos Lucas Figueiredo Thiago Rocha.

Slides:



Advertisements
Apresentações semelhantes
Estruturação de Linguagens (Pascal e C++)
Advertisements

Desenvolvimento de aplicativos Orientados a Objetos: Definição e Características THIAGO IDEALI.
Introdução a Programação Orientada a Objetos
C/C++ para Sistemas Operacionais Professor: André Luis Meneses Silva /msn: Página:
Paulo Marques Hernâni Pedroso
JavaScript O JavaScript é uma linguagem de scripting, orientada a objectos e independente de plataformas Criada pela NetScape Código embebido em paginas.
O Essencial sobre Linguagens de Programação Luís Caires Maio 2005.
PRDS - Programa de Residência em Desenvolvimento de Software Laboratório de Engenharia de Software (LES) da PUC-Rio Carlos Lucena
Orientação a Objetos: Encapsulamento e Classificação
Orientação a Objetos: Encapsulamento e Classificação
Orientação a Objetos Introdução. Objetos: o que são? Olhando o mundo real pode-se ver vários objetos: mesa, cadeiras, alunos, professores etc. Esses objetos.
Programação Básica em Java
Rafael Pinto Frederico Corrêa
Introdução ao paradigma de programação: Orientado a Objetos
Alexandre Parra Site: Linguagem Java Alexandre Parra Site:
Programação Orientada a Objetos
PROGRAMAÇÃO ou LINGUAGEM C?
Métodos Programação II
Tópicos Tipos de Dados Variáveis por Valor Variáveis por Referência
Orientação a Objetos.
TÉCNICAS DE PROGRAMAÇÃO II
Paradigmas de programação
JAVA: Conceitos Iniciais
Polimorfismo em C#.
Introdução a linguagem Python
Unidade I: “Dê um mergulho rápido”
Aula prática - análise contextual
Programação Avançada Prof. Natalia Castro Fernandes
Programação Orientada a Objetos
METODOLOGIA PARA DESENVOLVIMENTO DE SISTEMAS Prof. Dr. rer. nat. Daniel D. Abdala 1.
Programação Orientada à Objetos
Linguagem de Programação II Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.
Métodos de Construção de Software: Orientação a Objetos
Linguagem de programação
Estudo dos Conceitos e Paradigmas de Programação
Classes, Objetos, Atributos e Métodos JAVA
Ruby Viviane Souza (vess).
Professor: Márcio Amador
Orientação a Objetos Parte I
Herança em POO Importante:
SISTEMAS DISTRIBUIDOS Aula 4
Aula Prática 1 Monitoria IP/CC (~if669). Verificação Dinâmica de Tipos Métodos de superclasses e subclasses: Uso de métodos de subclasses quando se é.
Aula prática 14 Orientação a Objetos – C++ Parte 2
PROGRAMAÇÃO ou LINGUAGEM C?
Laboratório de Programação I Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.
Smalltalk Grupo Anderson Bistafa Hugo Carlos
Aula 1 – Profª Danielle Costa
SmallTalk Caio Cezar Rodrigues Quirino Daniel Mário Adamis Fabio Venicius Oliveira Rafael Barbosa Januzi Roger Wellington.
Ruby André Braga Patrícia Lustosa. Yukihiro Matsumoto (“Matz”), 1993 Perl Smalltalk Eiffel Ada Lisp “Natural, not simple” “More powerful than Perl and.
Construtores e Destrutores
Aula Prática 5 Monitoria IP/CC (~if669). Roteiro 1. 1.Recursão 2. 2.Escopo de Variáveis 3. 3.Arrays 4. 4.Strings.
Conceitos Básicos e Manipulação de Objetos
Fundamentos de linguagens de programação
Copyright 1998, Departamento de Informática da UFPE. Todos os direitos reservados sob a legislação em vigor. Variáveis e métodos estáticos, Passagem de.
Bruno Inojosa MCP .NET Framework
Artur Lira Diego Lemos Lucas Figueiredo Thiago Rocha
Conteúdos Programáticos Criação de classes em VB Criar Criar Manipular Manipular Tipos de acesso Tipos de acesso Constructores Constructores.
Copyright 2000, Departamento de Informática, UFPE. Todos os direitos reservados sob a legislação em vigor. Orientação a Objetos e Java.
JR: Flexible Distributed Programming in an Extended Java Elmário Gomes Dutra Jr. Gustavo Romano.
Linguagem JAVA Ariane Machado Lima.
Introdução ao C++ para programadores OO Instrutores: Francisco Carvalho, João Paulo do Monte, Renato Viana Ferreira {fcfl, jpsml,
Introdução à Programação Orientada a Objeto
Influencias sobre o Projeto da Linguagem
Linguagem Java Programação II.
Raniere ferreira do prado
Java Como Programar, 8/E Deitel/Deitel, 8e. Java – Como programar Copyright © 2010 Pearson Education Slide 1.
1. 2 Prof. Maurício Rodrigues de Morais Programação Orientada a Objetos II.
1.
Introdução à Orientação a Objetos em Java Prof. Gustavo Wagner (Alterações) Slides originais: Prof. Tiago Massoni Desenvolvimento de Sistemas FATEC-PB.
Transcrição da apresentação:

Smalltalk Artur Lira Diego Lemos Lucas Figueiredo Thiago Rocha

Introdução Surgiu em meados da década de 70 Visava atingir grande número de pessoas de faixas etárias distintas Orientada a objetos Fracamente tipada Simples implementação Não há tipos primitivos

História Começou a ser desenvolvida no final dos anos 60 pelo grupo de pesquisa da Xerox Várias evoluções: - Smalltalk-71 ( parecido com o Logo) - Smalltalk-72 (adicionadas funcionalidades multimídia) - Smalltalk-76 (versão mais robusta) - Smalltalk-80

História Smalltalk-80  Voltado para o mercado ( HP,IBM, Apple)  Programas rodavam sobre uma Máquina Virtual  Tornou-se padrão para as diversas versões do Smalltalk

Paradigma de Programação Paradigma Orientado a Objetos Classes definem os objetos  Comportamento (definido nos métodos)  Estados Possíveis(atributos)  Instâncias (objetos) Envio de mensagens a objetos Objetos responderão a mensagens conhecidas por ele Todas as mensagens enviadas foram respondidas

Utilização Simulação de modelos de sistemas  Automação de escritórios  Animação Gráfica  Informática Educativa  Instrumentos Virtuais  Editores de Texto  Bancos de Dados Genéricos

Sintaxe Literais Variáveis Atribuições Mensagens Expressões Blocos de Código

Sintaxe: Literais e2 2r rA000 36rSMALLTALK =

Sintaxe: Literais Caracteres: $A Strings: ‘Hello, world!’ Symbols: #foo Array de Symbols: #( ) Blocos: [... Some smalltalk code...]

Sintaxe: Variáveis Variáveis temporárias:  No topo dos métodos  Escritas entre barras verticais  Uma ou mais variáveis por espaço. | index | | index vowels |

Sintaxe: Atribuições Operador :=  vowels := 'aeiou‘ A string ‘aeiou’ é criada na etapa de compilação e armazenada na variável vowels.

Sintaxe: Mensagens Receiver Selector Arguments  aRatherBigNumber := 42 factorial  2 raisedTo: 4  'hello world' indexOf: $o startingAt: 6  3 + 4

Sintaxe: Expresões 3 factorial + 4 factorial between: 10 and: recebe a mensagem "factorial" e retorna recebe a mensagem "factorial" e retorna recebe a mensagem "+" e 24 como argumento e por fim retorna recebe a mensagem "between:and:" com 10 e 100 como argumentos e retorna true.  3 factorial factorial log  * 5 = (3 + 4) * 5...?

Sintaxe: Expresões | window | window := Window new. window label: 'Hello'. window open.

Sintaxe: Blocos de Código [ :params | ] [:x | x + 1]  Matematicamente: f(x) = x + 1

Estruturas de Controle Seleção condicional  C++: if((numero % 2) == 0) paridade = 1; else paridade = 0;  paridade = ((numero % 2) == 0))?1:0;  Smalltalk:  (numero \\ 2) = 0 ifTrue: [  paridade :=1  ] ifFalse: [  paridade := 0  ]  paridade := numero \\ 2 = 0 ifTrue: [1] ifFalse: [0]

Estruturas de Controle Repetição  C++: for(int i = 0; i < 3; i++) n *= n;  Smalltalk: 3 timesRepeat: [n := n * n]

Estruturas de Controle Repetição  C++:  int i = 0; while(i < tamanhoArray){ array[i] = 0; }  Smalltalk: i := 1. [i <= array size] whileTrue: [ array at: i put: 0. i := i + 1 ]

Classes Definição de classe: Object subclass: #MessagePublisher instanceVariableNames: '' classVariableNames: '' poolDictionaries: '' category: 'Smalltalk Examples‘ Objetos de primeira ordem Recebem mensagens

Métodos Definição de método publico publish Transcript show: 'Hello, World!' Objeto recebe mensagem -- > método com nome da mensagem é invocado Objetos determinam em tempo de execução qual método a ser executado

Instanciando Classes New -> retorna uma instância da classe  MessagePublisher new Retorno atribuido a uma variável  publisher := MessagePublisher new

Implementação Inexistência de código fonte Utilização de objetos já existentes, na própria linguagem Tudo é modificável

Ambiente de desenvolvimento Smalltalk não é padronizado, existindo varias versões com pequenas diferenças de sintaxe. Express Smalltalk/X GNU Smalltalk

Vantagens Puramente orientada a objetos Polimorfismo e binding dinâmico  Flexibilidade  Reutilização Dados abstratos e encapsulamento  Modificabilidade  Confiabilidade Herança  Extensível

Desvantagens Não possui ordem de precedência para operações binárias Devido a “fraca tipagem” pode ocorrer erros em tempo de execução, devido a um objeto não entender uma mensagem

Dúvidas?