Разработка классов на языке Object Pascal. Соколов Е.В. - 63 стр.

UptoLike

Составители: 

63
procedure RGBColor.MultiplyBy(n: Number);
var i: Integer;
begin
if n is RGBColor
then for i:=1 to 3 do
self.comp[i]:=self.comp[i]*(n as RGBColor).comp[i]
else raise Exception.Create('Invalid operation');
self.Clamp;
end;
procedure RGBColor.DivideBy(n: Number);
var i: Integer;
begin
if n is RGBColor
then for i:=1 to 3 do
self.comp[i]:=self.comp[i]/(n as RGBColor).comp[i]
else raise Exception.Create('Invalid operation');
self.Clamp;
end;
procedure RGBColor.Assign(n: Number);
var i: Integer;
begin
if n is RGBColor
then for i:=1 to 3 do self.comp[i]:=(n as RGBColor).comp[i]
else raise Exception.Create('Invalid operation');
end;
function RGBColor.AsString: String;
begin
result:='Red: '+FloatToStrF(self.comp[1],ffFixed,1,4)+
', Green: '+FloatToStrF(self.comp[2],ffFixed,1,4)+
', Blue: '+FloatToStrF(self.comp[3],ffFixed,1,4);
end;
function RGBColor.GetComp(i: Integer): Real;
begin
result:=self.comp[i];
end;
procedure RGBColor.SetComp(i: Integer; value: Real);
begin
if (value>=0) and (value<=1) // значение должно принадлежать
then self.comp[i]:=value // отрезку [0,1]
else raise Exception.Create('Illegal value');
end;
procedure RGBColor.SetRed(value: Real); // реализации отличаются
begin self.SetComp(1, value); end; // лишь номером компоненты
procedure RGBColor.SetGreen(value: Real);
begin self.SetComp(2, value); end;
procedure RGBColor.MultiplyBy(n: Number);
var i: Integer;
begin
  if n is RGBColor
     then for i:=1 to 3 do
            self.comp[i]:=self.comp[i]*(n as RGBColor).comp[i]
     else raise Exception.Create('Invalid operation');
  self.Clamp;
end;
procedure RGBColor.DivideBy(n: Number);
var i: Integer;
begin
  if n is RGBColor
     then for i:=1 to 3 do
            self.comp[i]:=self.comp[i]/(n as RGBColor).comp[i]
     else raise Exception.Create('Invalid operation');
  self.Clamp;
end;
procedure RGBColor.Assign(n: Number);
var i: Integer;
begin
  if n is RGBColor
     then for i:=1 to 3 do self.comp[i]:=(n as RGBColor).comp[i]
     else raise Exception.Create('Invalid operation');
end;
function RGBColor.AsString: String;
begin
  result:='Red: '+FloatToStrF(self.comp[1],ffFixed,1,4)+
     ', Green: '+FloatToStrF(self.comp[2],ffFixed,1,4)+
     ', Blue: '+FloatToStrF(self.comp[3],ffFixed,1,4);
end;
function RGBColor.GetComp(i: Integer): Real;
begin
  result:=self.comp[i];
end;
procedure RGBColor.SetComp(i: Integer; value: Real);
begin
  if (value>=0) and (value<=1) // значение должно принадлежать
     then self.comp[i]:=value   // отрезку [0,1]
     else raise Exception.Create('Illegal value');
end;
procedure RGBColor.SetRed(value: Real); // реализации отличаются
begin self.SetComp(1, value); end;      // лишь номером компоненты
procedure RGBColor.SetGreen(value: Real);
begin self.SetComp(2, value); end;




                                 63