Continue with the Basics by Example; today's version of the post written in Oxygene Enjoy!
You can copy and paste the code below in your favorite IDE/Editor and start playing and learning with it. This little "working" program will teach you the basics of the Programming Language.
There are some "comments" on the code added just to tell you what are or how are some features called. In case you want to review the theory, you can read my previous post, where I give a definition of each of the concepts mentioned on the code. You can find it here: http://carlosqt.blogspot.com/2010/08/new-series-languages-basics-by-example.html
Greetings Program - Verbose
// Delphi Prism Basics namespace DPGreetProgram; interface uses System; type Greet = public class // Fields of Attributes private var fMessage: String; private var fName: String; private var fLoopMessage: Integer; // Methods Definition private method Capitalize(value: String): String; private method SetMessage(value: String); private method SetName(value: String); // Properties public property Message: String read fMessage write SetMessage; public property Name: String read fName write SetName; public property LoopMessage: Integer read fLoopMessage write fLoopMessage; // Constructors Definition public constructor(); public constructor(message: String; name: String; loopMessage: Integer); // Methods Definition public method Salute(); public method Salute(message: String; name: String; loopMessage: Integer); public method Salute(name: String); end; type GreetProgram = public class public class method Main(args: array of String); end; implementation // Property Setters/Getters Methods method Greet.SetMessage(value: String); begin self.fMessage := self.Capitalize(value); end; method Greet.SetName(value: String); begin self.fName := self.Capitalize(value); end; // Constructor constructor Greet(); begin self.fMessage := ""; self.fName := ""; self.loopMessage := 0; end; // Overloaded Constructor constructor Greet(message: String; name: String; loopMessage: Integer); begin self.fMessage := message; self.fName := name; self.loopMessage := loopMessage; end; // Method 1 method Greet.Capitalize(value: String): String; begin // "if-then-else" statement if value.Length >= 1 then begin result := value[0].ToString().ToUpper() + value.SubString(1, value.Length - 1); end else begin result := ""; end; end; // Method 2 method Greet.Salute(); begin // "for" statement for i: Integer := 1 to self.loopMessage step 1 do begin Console.WriteLine("{0} {1}!", self.fMessage, self.fName); end; end; // Overloaded Method 2.1 method Greet.Salute(message: String; name: String; loopMessage: Integer); var i: Integer; begin // "while" statement i := 0; while i < loopMessage do begin Console.WriteLine("{0} {1}!", self.Capitalize(message), self.Capitalize(name)); i := i + 1; end; end; // Overloaded Method 2.2 method Greet.Salute(name: String); var dtNow: DateTime; begin // "switch/case" statement dtNow := DateTime.Now; case dtNow.hour of 6..11: self.fMessage := "good morning,"; 12..17: self.fMessage := "good afternoon,"; 18..22: self.fMessage := "good evening,"; 23,0..5: self.fMessage := "good night,"; else self.fMessage := "huh?"; end; Console.WriteLine("{0} {1}!", self.Capitalize(self.fMessage), self.Capitalize(name)); end; // Console Program class method GreetProgram.Main(args: array of String); var // Define object of type Greet g: Greet; begin // Instantiate Greet. Call Constructor g := new Greet(); // Call Set Properties g.Message := "hello"; g.Name := "world"; g.LoopMessage := 5; // Call Method 2 g.Salute(); // Call Overloaded Method 2.1 and Get Properties g.Salute(g.Message, "delphi Prism", g.LoopMessage); // Call Overloaded Method 2.2 g.Salute("carlos"); // Stop and exit Console.WriteLine("Press any key to exit..."); Console.Read(); end; end.
Greetings Program - Minimal
// Delphi Prism Basics namespace; interface uses System; type Greet = class private // Fields of Attributes fMessage: String; fName: String; fLoopMessage: Integer; // Methods Definition method Capitalize(value: String): String; method SetMessage(value: String); method SetName(value: String); public // Properties property Message: String read fMessage write SetMessage; property Name: String read fName write SetName; property LoopMessage: Integer read fLoopMessage write fLoopMessage; // Constructors Definition constructor; constructor(message: String; name: String; loopMessage: Integer); // Methods Definition method Salute; method Salute(message: String; name: String; loopMessage: Integer); method Salute(name: String); end; type GreetProgram = class public class method Main(args: array of String); end; implementation // Property Setters/Getters Methods method Greet.SetMessage(value: String); begin fMessage := Capitalize(value); end; method Greet.SetName(value: String); begin fName := Capitalize(value); end; // Constructor constructor Greet; begin fMessage := ""; fName := ""; loopMessage := 0; end; // Overloaded Constructor constructor Greet(message: String; name: String; loopMessage: Integer); begin fMessage := message; fName := name; loopMessage := loopMessage; end; // Method 1 method Greet.Capitalize(value: String): String; begin // "if-then-else" statement if value.Length >= 1 then begin result := value[0].ToString().ToUpper() + value.SubString(1, value.Length - 1); end else begin result := ""; end; end; // Method 2 method Greet.Salute; begin // "for" statement for i: Integer := 1 to loopMessage step 1 do begin Console.WriteLine("{0} {1}!", fMessage, fName); end; end; // Overloaded Method 2.1 method Greet.Salute(message: String; name: String; loopMessage: Integer); var i: Integer; begin // "while" statement i := 0; while i < loopMessage do begin Console.WriteLine("{0} {1}!", Capitalize(message), Capitalize(name)); i := i + 1; end; end; // Overloaded Method 2.2 method Greet.Salute(name: String); var dtNow: DateTime; begin // "switch/case" statement dtNow := DateTime.Now; case dtNow.hour of 6..11: fMessage := "good morning,"; 12..17: fMessage := "good afternoon,"; 18..22: fMessage := "good evening,"; 23,0..5: fMessage := "good night,"; else fMessage := "huh?"; end; Console.WriteLine("{0} {1}!", Capitalize(fMessage), Capitalize(name)); end; // Console Program class method GreetProgram.Main(args: array of String); var // Define object of type Greet g: Greet; begin // Instantiate Greet. Call Constructor g := new Greet(); // Call Set Properties g.Message := "hello"; g.Name := "world"; g.LoopMessage := 5; // Call Method 2 g.Salute; // Call Overloaded Method 2.1 and Get Properties g.Salute(g.Message, "delphi Prism", g.LoopMessage); // Call Overloaded Method 2.2 g.Salute("carlos"); // Stop and exit Console.WriteLine("Press any key to exit..."); Console.Read(); end; end.
And the Output is:
Auto-Implemented Properties in Delphi Prism
Auto-implemented properties enable you to quickly specify a property of a class without having to write code to Get and Set the property. The following code shows how to use them just like with VB.NET, C#, C++/CLI and so on.
namespace; interface uses System; type Greet = class // No explicit private field required // private fMessage: String; // Auto Implemented Property property Message: String; constructor(); method Salute(); method Salute(value: String); end; type GreetProgram = class class method Main(args: array of String); end; implementation // Constructor constructor Greet(); begin Message := ""; end; method Greet.Salute(); begin Console.WriteLine(Message[0].ToString().ToUpper() + Message.SubString(1, Message.Length - 1)); end; method Greet.Salute(value: String); begin Console.WriteLine(value[0].ToString().ToUpper() + value.SubString(1, value.Length - 1)); end; class method GreetProgram.Main(args: array of String); var g: Greet; begin g := new Greet(); // Call Set Auto Implemented Property g.Message := "hello"; g.Salute; g.Message := "bye"; // Call Get Auto Implemented Property g.Salute(g.Message); end; end.
And the Output is:
No comments:
Post a Comment