type // Define a base TPolygon class : // This class is a traingle if 3 sides, square if 4 sides ... TPolygon = class private sideCount : Integer; // How many sides? sideLength : Integer; // How long each side? shapeArea : Double; // Area of the polygon protected procedure setArea; Dynamic; Abstract; // Must be implemented in child function getArea : Double; Dynamic; Abstract; property count : Integer read sideCount; property length : Integer read sideLength; property area : Double read shapeArea; constructor Create(sides, length : Integer); reintroduce; end; // Define triangle and square descendents TTriangle = class(TPolygon) protected procedure setArea; override; // Override the abstract method function getArea : Double; override; end; TSquare = class(TPolygon) protected procedure setArea; override; // Override the abstract method function getArea : Double; override; end; implementation {$R *.dfm} // Include form definitions // Create the TPolygon object constructor TPolygon.Create(sides, length : Integer); begin inherited; // Save the number and length of the sides sideCount := sides; sideLength := length; // Set the area using the abstract setArea method : // This call will be satisfied only by a subclass setArea; end; // Implement the abstract setArea parent method for the triangle procedure TTriangle.setArea; begin // Calculate and save the area of the square shapeArea := (sideLength * sideLength) / 2; end; function TTriangle.getArea : Double; begin result:=shapeArea; end; // Implement the abstract setArea parent method for the square procedure TSquare.setArea; begin // Calculate and save the area of the square shapeArea := sideLength * sideLength; end; function TSquare.getArea : Double; begin result:=shapeArea; end; end.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionunit ExtensionManager; interface uses Forms, Dialogs, Classes, Controls, stdctrls, SysUtils; type TSetOfChar = Set of Char; TExtensionManger = class private procedure AddItemsToList(List : TSetOfChar); procedure DeleteItemToList(List : TSetOfChar); function IsSetOfExtensionsPartOfList(List : TSetOfChar): Boolean; protected Name : String; ExtensionList : TSetOfChar; public property GetName : String read name; {procedure SetName(Sentence : String); property GetExtensionList : TSetOfChar read ExtensionList; procedure AddExtension(Extension : String); overload; //Remplir avec une seule extension procedure AddExtension(ExtList : TSetOfChar); overload; //Remplir avec un ensemble procedure AddExtension(ExtArray : Array of Char); overload; //Remplir avec un tableau procedure RemoveExtension(Extension : String); overload; //Enlever une seule extension procedure RemoveExtension(ExtList : TSetOfChar); overload; //Enlever avec un ensemble procedure RemoveExtension(ExtArray : Array of Char); overload; //Enlever avec un tableau procedure RemoveAll(); function IsFilePartOfList(Files : TSearchRec): Boolean; overload; function IsFilePartOfList(Filename : String): Boolean; Overload; function IsExtensionPartOfList(Extension : String): Boolean;} constructor Create(Nom : String); end; implementation procedure AddItemsToList(List : TSetOfChar); begin ExtensionList:=ExtensionList+List; end; procedure DeleteItemToList(List : TSetOfChar); begin ExtensionList := ExtensionList - List; end; end.
function ControlValidity(Chaine : String): Boolean; var i:integer; begin i:=GetNumberOfLetters(); Result:=True; if Length(Chaine)<>(i+1) then //vérifie le nombre total de caractère Result:=False; end;
type TExtensionManager = class Private fName : String; fMaxLetters : Integer; //Nombre de lettre max d'une extension 3 par defaut protected ExtensionList : TStringList; public function GetNumberOfLetters(): Integer;
function TExtensionManager.GetNumberOfLetters(): Integer; begin Result:=fMaxLetters; end;