StartprogrammingusingObjectPascal:Units

From 흡혈양파의 번역工房
Revision as of 11:06, 4 April 2013 by Onionmixer (talk | contribs) (번역수정)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

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의 경로를 추가할 때