Monday, June 1, 2009

Objective-C vs. Delphi: Syntax

更多精彩请到 http://www.139ya.com

Objective-C

Delphi

@interface Rectangle: GeometricObject

{

@private

float with;

float height;

}

+(void)aClassMethod;

-(id)init;

-(id)dealloc;

-(void)setSize:(float)aWidth:(float)aHeight;

@end

interface

type

Rectangle = class(GeometricObject)

private

width: extended;

height: extended;

public

constructor create; virtual;

destructor destroy;

class aClassMethod; virtual;

procedure setSize(aWidth,

aHeight: extended); virtual;

end;


implementation

class procedure Rectangle.aClassMethod;

begin

...

end;

constructor Rectangle.create;

begin

inherited create;

width:=0; height:=0;

end;

destructor Rectangle.destroy;

begin

...

inherited destroy;

end;

procedure Rectangle.setSize(aWidth,

aHeight: extended);

begin

width:=aWidth;

height:=aHeight;

end;

end.

#import "Rectangle.h"

@implementation Rectangle

+(void)aClassMethod

{

...

}

-(id)init

{

[super init];

width=0;

height=0;

return self;

}

-(id)dealloc

{

...

[super dealloc]

}

-(void)setSize:(float)aWidth:(float)aHeight

{

width=aWidth;

height=aHeight;

}

@end

#include

void main()

{

id anyObject;

Rectangle *aRect;

anyObject = [[Rectangle alloc] init];

[anyObject setSize:1:2]; // this is

dynamic!

if ([anyObject respondsTo:

@selector(setSize::)])

[anyObject setSize:1:2]; // this is save!



aRect = [[Rectangle alloc] init];

[aRect setSize:10:5];

[aRect free];

[aRect free];

exit (0);

}

uses rectangle.pas;

var

anyObject: TObject;

aRect: Rectangle;

begin

anyObject:=Rectangle.create;

// anyObject.setSize(1,2); NOT POSSIBLE!

aRect:=Rectangle.create;

aRect.setSize(10,5);

aRect.free;

anyObject.free;

halt(0);

end.


No comments: