Saltar para o conteúdo

Object Pascal: diferenças entre revisões

Origem: Wikipédia, a enciclopédia livre.
Conteúdo apagado Conteúdo adicionado
MastiBot (discussão | contribs)
m Bot: Adicionando: ar:أوبجكت باسكال
m Correção.
 
(Há 33 revisões intermédias de 19 utilizadores que não estão a ser apresentadas)
Linha 1: Linha 1:
{{sem fontes|data=fevereiro de 2014}}
<br>
{{Info/Linguagem de computador
{{Info/Linguagem de computador
|nome = Object Pascal
|nome = Object Pascal
Linha 7: Linha 9:
|ano =
|ano =
|ultima_versao =
|ultima_versao =
|ultima_data =
|ultima_data = 07 de fevereiro
|criador = [[Niklaus Wirth]] e [[Apple Inc.]]
|criador = [[Niklaus Wirth]] e [[Apple Inc.]]
|tipagem = [[Tipo de dado#Tipo estático e dinâmico|Dinâmica e Estática]], [[Tipo de dado#Tipo forte e fraco|Forte]]
|tipagem = [[Tipo de dado#Tipo estático e dinâmico|Dinâmica e Estática]], [[Tipo de dado#Tipo forte e fraco|Forte]]
|compiladores =
|compiladores =
|dialetos = [[CodeGear Delphi]], Oxygene
|dialetos = Apple Object Pascal, [[Turbo Pascal]], objfpc, [[Embarcadero Delphi|Delphi]], [[Delphi.NET]], [[Oxygene]]
|influenciada_por = [[Pascal (linguagem de programação)|Pascal]], [[Smalltalk]]
|influenciada_por = [[Pascal (linguagem de programação)|Pascal]], [[Smalltalk]]
|influenciou = [[C Sharp|C#]], [[Java (linguagem de programação)|Java]]
|influenciou = [[C Sharp|C#]], [[Java (linguagem de programação)|Java]]
|licença =
|licença =
|extensão = .pas, .p, .pp
|website =
|website =
}}
}}
'''Object Pascal''' é uma ramificação de [[Linguagem de programação|linguagens]] derivativas de [[Pascal (linguagem de programação)|Pascal]], com suporte a [[orientação a objetos]]. A principal ferramenta para programar em Object Pascal é o [[IDE]] [[Delphi]] da Borland.
'''Object Pascal''' é uma ramificação de [[Linguagem de programação|linguagens]] derivativas de [[Pascal (linguagem de programação)|Pascal]], com suporte a [[orientação a objetos]]. As principais ferramentas para programar em Object Pascal são o [[Ambiente de desenvolvimento integrado|IDE]] [[Embarcadero Delphi]] e o [[Lazarus (ADI)|Lazarus]]. Foi usada nas sete primeiras versões do ambiente Delphi. Depois, foi substituído por uma versão também chamada de Delphi.


== Programa Olá Mundo ==
Foi usada nas sete primeiras versões do ambiente Delphi. Depois, foi substituído por uma versão chamda também de Delphi.
Compatível com [[Embarcadero Delphi|Delphi]] e [[Free Pascal]].


<syntaxhighlight lang="pascal">
== Tipos de polimorfismo em Object Pascal ==
program ObjectPascalExample;
Por fazer parte do paradigma orientado à objetos, Object Pascal tem suporte ao [[polimorfismo]]. Segundo o artigo de Cardelli e Wegner sobre a definição dos tipos de [[polimorfismo]], segue como a linguagem implementa cada tipo:


type
; Polimorfismo ad hoc por [[sobrecarga]](overloading):
THelloWorld = class
procedure Put;
end;


procedure THelloWorld.Put;
Para que um determinado método de uma classe possa ser sobrecarregado em Object Pascal, é necessário usar o modificador overload, assim o compilador diferencia os métodos sobrecarregados por sua assinatura:
begin
Writeln('Hello, World!');
end;


var
type
HelloWorld: THelloWorld; { isso é um ponteiro implícito }
TAlgumaClasse = class
procedure UmMetodo(I: Integer); overload;
procedure UmMetodo(S: string); overload;
procedure UmMetodo(D: Double); overload;
end;


begin
; Polimorfismo ad hoc por Coerção:
HelloWorld := THelloWorld.Create; { construtor retorna ponteiro }
HelloWorld.Put;
HelloWorld.Free; { essa linha libera o espaço de memória que contém o objeto (destrói o objeto) }
end.
</syntaxhighlight>


== Ver também ==
Em Object Pascal pode existir coerção automática. A coerção automática ocorre quando o compilador converte o tipo de uma variável em outra para realizar uma operação:
* [[Embarcadero Delphi]]
* [[Pascal (linguagem de programação)]]
* [[Window Object Library]]
* [[Lazarus (ADI)|Lazarus]]


{{Linguagens de programação}}
procedure TForm1.Button1Click(Sender: TObject);
var
b : Integer;
a : LongInt;
begin
a := 3000;
b := a;
ShowMessage( IntToStr( b ) );
end;


{{Esboço-programação}}
Neste exemplo o número 3000 será mostrado.


; Polimorfismo Universal Paramétrico:

Polimorfismo Universal Paramétrico foi introduzido com o nome de Generics inicialmente na Versão Delphi2007.NET e apenas para programas da plataforma .NET. Posteriormente foi introduzido na plataforma Delphi Win32 na versão 2009 da IDE.<br />
Com Generics é possível parametrizar Classes, Interfaces, records e até mesmo métodos e ao invés de estar passando um valor nesse parâmetro, estamos passando um ''tipo''.<br />
Ilustrado aqui uma declaração utilizando Generics em Delphi 2009 win32:

type
TList<T> = class(TEnumerable<T>)
// …
public
// …
function Add(const Value: T): Integer;
procedure Insert(Index: Integer; const Value: T);
function Remove(const Value: T): Integer;
procedure Delete(Index: Integer);
procedure DeleteRange(AIndex, ACount: Integer);
function Extract(const Value: T): T;
procedure Clear;
property Count: Integer read FCount write SetCount;
property Items[Index: Integer]: T read GetItem write SetItem; default;
end;

Esse código de TList<T> possibilita um conjunto de possíveis classes com apenas um código.
Existem maneiras de simular o comportamento de Generics em versões anteriores do compilador de Object Pascal utilizando comandos de compilador para conseguir resultados parecidos com os Templates de C++.<ref name="newftrs">{{cite web|title=Templates in Object Pascal|publisher=Embarcadero|url=http://edn.embarcadero.com/article/27603|accessdate=2009-11-02}}</ref>

; Polimorfismo Universal por Inclusão:

Esse tipo de polimorfismo se dá através de um mecanismo de inclusão faz com que as classes se relacionem de maneira polimórfica. No Object Pascal esse mecanimso de inclusão é o de subTipo assim como no Java.<br />
Isso garante que duas classes distintas (mas dentro de uma hierarquia) possam ser manipuladas através de um tipo mais abstrato e comum entre elas.
Exemplo de Polimorfismo por Inclusão:

TClasse = class(TObject)
mensagem : String;
private
public
function getMensagem : String;
procedure setMensagem(x : String);
end;
//…
TClasseFilha1 = class(TClasse)
private
public
end;
//…
TClasseFilha2 = class(TClasse)
private
public
end;
//…
//Implementação dos getters setters omitida....

//uso
procedure TForm1.Button1Click(Sender: TObject);
var
varClasseMae : TClasse;
varClasseFilha1 : TClasseFilha1;
varClasseFilha2 : TClasseFilha2;
begin
varClasseFilha1 := TClasseFilha1.Create;
varClasseFilha1.setMensagem('Filha1! yahooo!');
varClasseFilha2 := TClasseFilha2.Create;
varClasseFilha2.setMensagem('Filha2! eeeepa!');
varClasseMae := varClasseFilha1;
ShowMessage( varClasseMae.getMensagem );
varClasseMae := varClasseFilha2;
ShowMessage( varClasseMae.getMensagem );
end;

{{Ref-section|col=2}}

== {{Ver também}} ==
* [[CodeGear Delphi]]
* [[Pascal (linguagem de programação)]]

{{Esboço-programação}}
{{Linguagens de programação}}
{{Sem imagem}}
{{Sem imagem}}


{{Controle de autoridade}}
[[Categoria:Linguagens de programação]]
[[Categoria:Linguagens de programação orientadas a objetos]]

[[ar:أوبجكت باسكال]]
[[cs:Object Pascal]]
[[da:Object Pascal]]
[[en:Object Pascal]]
[[eo:Objektema Paskalo]]
[[es:Object Pascal]]
[[fi:Object Pascal]]
[[fr:Object Pascal]]
[[ja:Object Pascal]]
[[ko:오브젝트 파스칼]]
[[ms:Object Pascal]]
[[nl:Object Pascal]]
[[pl:Object Pascal]]
[[ro:Object Pascal]]
[[ru:Object Pascal]]
[[sk:Object Pascal]]
[[sq:Object Pascal]]
[[sv:Object Pascal]]
[[tg:Object Pascal]]
[[th:ภาษาอ็อบเจกต์ปาสกาล]]
[[tr:Object Pascal]]
[[uk:Object Pascal]]
[[zh:Object Pascal]]

Edição atual tal como às 00h17min de 14 de junho de 2021


Object Pascal
Paradigma Programação estruturada,
Programação imperativa,
Orientação a objetos
Última versão (07 de fevereiro)
Criado por Niklaus Wirth e Apple Inc.
Estilo de tipagem Dinâmica e Estática, Forte
Dialetos Apple Object Pascal, Turbo Pascal, objfpc, Delphi, Delphi.NET, Oxygene
Influenciada por Pascal, Smalltalk
Influenciou C#, Java
Extensão do arquivo .pas, .p, .pp

Object Pascal é uma ramificação de linguagens derivativas de Pascal, com suporte a orientação a objetos. As principais ferramentas para programar em Object Pascal são o IDE Embarcadero Delphi e o Lazarus. Foi usada nas sete primeiras versões do ambiente Delphi. Depois, foi substituído por uma versão também chamada de Delphi.

Programa Olá Mundo

[editar | editar código-fonte]

Compatível com Delphi e Free Pascal.

program ObjectPascalExample;

type
   THelloWorld = class
      procedure Put;
   end;

procedure THelloWorld.Put;
begin
   Writeln('Hello, World!');
end;

var
   HelloWorld: THelloWorld;           { isso é um ponteiro implícito }

begin
   HelloWorld := THelloWorld.Create;  { construtor retorna ponteiro }
   HelloWorld.Put;
   HelloWorld.Free;                   { essa linha libera o espaço de memória que contém o objeto (destrói o objeto) }
end.
Ícone de esboço Este artigo sobre programação de computadores é um esboço. Você pode ajudar a Wikipédia expandindo-o.