StartprogrammingusingObjectPascal:Units

From 흡혈양파의 번역工房
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

Unit

파스칼의 Unit은 수많은 프로그램에서 사용할 수 있는 프로시저, 함수, 상수, 사용자 정의 형식을 가진 라이브러리입니다.


Unit 은 다음과같은 목적을 위해 사용합니다

  1. 외부 Unit 을 사용해서 프로그램에서 자주 사용하는 프로시저나 함수를 모아놓습니다. 이는 소프트웨어 개발시 코드 재사용성을 충족합니다.
  2. 하나의 실체 안에서 제각각의 작업을 수행할 때 사용하는 프로시저나 함수를 모아놓습니다. 관련성 없는 프로시저들로 메인 프로그램의 소스 코드의 규모를 불리는 대신에, Unit을 사용하여 논리적인 모듈로 프로그램을 나누는 것이 더 좋습니다.


새 Unit을 만들기 위해 라자루스 메뉴의 File/New Unit으로 이동하면, 라자루스는 다음과 같은 양식을 만듭니다.

unit Unit1;

    {$mode objfpc}{$H+}

interface

uses
    Classes, SysUtils;

implementation

end.


새 Unit을 만들고 나면, Test와 같은 정해진 이름을 사용하여 저장할 것입니다. 이 소스 코드를 Test.pas라는 이름의 파일로 저장할 것이지만, Unit의 이름인 Test는 프로그램에 그대로 남게 될 것입니다.


이제 프로시저, 함수, 그리고 다른 재사용가능한 코드의 작성을 시작해볼 수 있습니다.

unit Test;

{$mode objfpc}{$H+}

interface
uses
   Classes, SysUtils;

const
    GallonPrice = 6.5;

function GetKilometers(Payment, Consumption: Integer): Single;

implementation
function GetKilometers(Payment, Consumption: Integer): Single;
begin
    Result:= (Payment / GallonPrice) * Consumption;
end;
end.


GallonPrice 상수와 다른 프로그램에서 호출할 GetKilometers 함수를 작성했습니다.


또한 Unit의 외부에서 접근 가능하도록 하기 위해 Unit의 Interface 부분에 함수를 선언 하였습니다. 어플리케이션은 Unit의 Interface 부분에만 접근 할 수 있기 때문입니다. 이 Unit을 사용하려면, Unit(Test.pas)과 같은 디렉터리에 새로운 프로그램을 만들고 uses절에 이 Unit을 추가합니다.

program PetrolConsumption;

{$mode objfpc}{$H+}

uses
    {$IFDEF UNIX}{$IFDEF UseCThreads}
    cthreads,
    {$ENDIF}{$ENDIF}
    Classes, SysUtils
    { you can add units after this }, Test;

var
    Payment: Integer;
    Consumption: Integer;
    Kilos: Single;
begin
    Write('How much did you pay for your car''s petrol: ');
    Readln(Payment);
    Write('What is the consumption of your car (Kilos per one Gallon) ');
    Readln(Consumption);

    Kilos:= GetKilometers(Payment , Consumption);

    Writeln('This petrol will keep your car running for: ',
        Format('%0.1f', [Kilos]), ' Kilometers');
    Write('Press enter');
    Readln;
end.

GetKilometers 함수로 이동하려면, GetKilometers 함수의 소스 코드를 표시하기 위해 Ctrl 키를 누른 상태에서 마우스로 이 이름에 가져다가 누를 수 있습니다. 라자루스나 델파이는 Test Unit을 바로 열고 해당 함수를 표시할 것입니다.


또한 Unit의 이름(Test)에 커서를 가져간 후 Alt + Enter를 눌러서 편집기에 Test Unit을 열 수 있습니다.


다음과 같은 조건에서 프로그램에서 Unit에 접근할 수 있습니다.

  1. 앞의 예제에서 했던 프로그램과 같이, 같은 디렉터리 안에 Unit 파일이 존재할 때
  2. 라자루스에서 Unit을 열고 Project/Add Editor File to project 를 마우스로 눌러서 프로젝트에 Unit을 추가할 때
  3. Project/Compiler Options/Compiler Options/Paths/Other Unit Files 에서 Unit의 경로를 추가할 때