StartprogrammingusingObjectPascal:Units

From 흡혈양파의 번역工房
Revision as of 10:35, 26 July 2012 by Onionmixer (talk | contribs) (SPOP 유닛 페이지 추가)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

유닛

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

unit은 다음 목적을 달성하기 위해 사용합니다

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

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

unit Unit1;

    {$mode objfpc}{$H+}

interface

uses
    Classes, SysUtils;

implementation

end.

새 유닛을 만들고 나면, Test와 같은 정해진 이름을 사용하여 저장할 것입니다. 이 소스 코드를 Test.pas라는 이름의 파일로 저장할 것이지만, 유닛의 이름인 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의 Interface 부분에 함수의 머리 부분을 넣었습니다. 이 유닛을 사용하려면, 유닛(Test.pas)과 같은 디렉터리에 새로운 프로그램을 만들고 uses절에 이 유닛을 추가합니다.

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 유닛을 바로 열고 해당 함수를 표시할 것입니다.

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

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

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