API Basic Visibility ko - LIHACHTETAN/ClassicUO-BadNewbie-BasicIDE GitHub Wiki

Public / Private

ClassicUO โ€ข Basic

Public์€ ๋ชจ๋“ˆ ๋ฉค๋ฒ„๋ฅผ ์™ธ๋ถ€ ์ฝ”๋“œ์— ๊ณต๊ฐœํ•ฉ๋‹ˆ๋‹ค. Private๋Š” ๊ฐ™์€ ๋ชจ๋“ˆ์˜ ํ•จ์ˆ˜, ํ”„๋กœ์‹œ์ €, ์ดˆ๊ธฐํ™” ์‹์—์„œ๋งŒ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•œ์ •์ž๋Š” ํ˜ธ์ถœ์ด ์•„๋‹Œ ์„ ์–ธ ์•ž์— ์”๋‹ˆ๋‹ค.

์ •ํ™•ํ•œ ๊ตฌ๋ฌธ

Public declaration
Private declaration

๋งค๊ฐœ๋ณ€์ˆ˜

  • visibility โ€” visibility: Public ๋˜๋Š” Private์ž…๋‹ˆ๋‹ค. ์ƒ๋žตํ•˜๋ฉด ๋ชจ๋“ˆ SUB/FUNCTION์€ ๊ณต๊ฐœ, VAR/DIM/CONST๋Š” ๋น„๊ณต๊ฐœ์ž…๋‹ˆ๋‹ค.
  • declaration โ€” declaration: SUB/FUNCTION, ์Šค์นผ๋ผ VAR/DIM ๋˜๋Š” CONST์ž…๋‹ˆ๋‹ค. Public์€ Module๊ณผ ํŒŒ์ผ ์ˆ˜์ค€ ์„ ์–ธ์—๋„ ์“ธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํŒŒ์ผ ์ˆ˜์ค€์ด๋‚˜ ํ”„๋กœ์‹œ์ € ๋ณธ๋ฌธ์˜ Private๋Š” ๊ธˆ์ง€๋ฉ๋‹ˆ๋‹ค. ๋ฉค๋ฒ„ ์„ ์–ธ ์ด๋ฆ„์—๋Š” ์ ์„ ๋„ฃ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋ฐ˜ํ™˜๊ฐ’

Public๊ณผ Private๋Š” ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜์ง€ ์•Š๊ณ  ํ•„๋“œ ํ˜•์‹์ด๋‚˜ ํ•จ์ˆ˜ ๊ฒฐ๊ณผ๋„ ๋ฐ”๊พธ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. Normalize(12)๋Š” RETURN์œผ๋กœ Integer 10์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. NextCount()๋Š” ์ƒˆ ๊ฐœ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋ฉฐ TRUE/FALSE๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค.

๋™์ž‘

  • Module ์•ˆ์—์„œ๋Š” ์ž์‹ ์˜ ์งง์€ ์ด๋ฆ„๊ณผ ์ „์ฒด ์ด๋ฆ„์„ ์“ธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์™ธ๋ถ€์—์„œ๋Š” ModuleName.Member๋กœ Public๋งŒ ์ ‘๊ทผํ•ฉ๋‹ˆ๋‹ค. Public์ด ์งง์€ ์ „์—ญ ์ด๋ฆ„์„ ๋งŒ๋“œ๋Š” ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค.
  • Option Explicit Off์—์„œ๋„ ์‹คํ–‰ ์ „์— ์ ‘๊ทผ์„ ๊ฒ€์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ๋ชจ๋“ˆ์˜ Private ์ ‘๊ทผ์€ SC019, ์ž˜๋ชป๋œ ๋ชจ๋“ˆ/ํ•œ์ •์ž ์„ ์–ธ์€ SC018 ๋˜๋Š” ๊ตฌ๋ฌธ ์˜ค๋ฅ˜์ž…๋‹ˆ๋‹ค. ์ด๋Ÿฐ ์˜ค๋ฅ˜๊ฐ€ ์žˆ์œผ๋ฉด ์ดˆ๊ธฐํ™” ์‹๋„ ์‹คํ–‰ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • ๊ณต๊ฐœ ํ•จ์ˆ˜๋Š” ๋น„๊ณต๊ฐœ ๋„์šฐ๋ฏธ๋ฅผ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ํ˜ธ์ถœ ํ•จ์ˆ˜๊ฐ€ ์„ ์–ธ๋œ ๋ชจ๋“ˆ์„ ๊ธฐ์ค€์œผ๋กœ ํŒ๋‹จํ•ฉ๋‹ˆ๋‹ค. ๋น„๊ณต๊ฐœ ๋„์šฐ๋ฏธ๋Š” IDE, ๋‹จ์ถ•ํ‚ค, ์™ธ๋ถ€ ํ”„๋กœ์‹œ์ € API์—์„œ ๋”ฐ๋กœ ์‹œ์ž‘ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
  • Public Const๋Š” ์—ฌ์ „ํžˆ ๋ณ€๊ฒฝ ๋ถˆ๊ฐ€์ด๊ณ  Public Var๋Š” ๋ณ€๊ฒฝ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ๋ช…์‹œ์ ์ธ ์ง€์—ญ ๋ณ€์ˆ˜๋Š” ์ž์‹ ์˜ ํ”„๋กœ์‹œ์ € ์•ˆ์—์„œ๋งŒ ๋™๋ช… ํ•„๋“œ๋ฅผ ๊ฐ€๋ฆฝ๋‹ˆ๋‹ค. Private๋Š” ์†Œ์Šค๋ฅผ ์•”ํ˜ธํ™”ํ•˜๊ฑฐ๋‚˜ ์†Œ์œ ์ž์—๊ฒŒ ์ฝ”๋“œ๋ฅผ ์ˆจ๊ธฐ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • ๋””๋ฒ„๊ฑฐ์˜ ์งง์€ ์ด๋ฆ„๊ณผ Private ์ ‘๊ทผ์€ ์„ ํƒํ•œ ํ”„๋ ˆ์ž„์— ๋”ฐ๋ฆ…๋‹ˆ๋‹ค. ๋ชจ๋“ˆ ์•ˆ์—์„œ๋Š” ํ•„๋“œ๋ฅผ ์ฝ์„ ์ˆ˜ ์žˆ์ง€๋งŒ ์™ธ๋ถ€ ํ˜ธ์ถœ์ž๋กœ ์ „ํ™˜ํ•˜๋ฉด ModuleName.privateField ์‹์€ ๊ฑฐ๋ถ€๋ฉ๋‹ˆ๋‹ค.

์˜ˆ์ œ

1. ๊ณต๊ฐœ ์ž…๊ตฌ์™€ ๋น„๊ณต๊ฐœ ๋„์šฐ๋ฏธ

# value=12๊ฐ€ Limits.Normalize์™€ Clamp๋กœ ์ „๋‹ฌ๋ฉ๋‹ˆ๋‹ค. maximum=10์œผ๋กœ ์ œํ•œํ•ด ๋‘ ํ•จ์ˆ˜๋Š” Integer 10์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. Main์€ Normalize๋งŒ ํ˜ธ์ถœํ•˜๋ฉฐ ์™ธ๋ถ€ Limits.Clamp(12) ํ˜ธ์ถœ์€ ๊ธˆ์ง€๋ฉ๋‹ˆ๋‹ค.
Option Explicit On
Module Limits
    Private Const maximum = 10
    Private Function Clamp(ByVal value)
        If value > maximum Then
            Return maximum
        End If
        Return value
    End Function
    Public Function Normalize(ByVal value)
        Return Clamp(value)
    End Function
End Module
Sub Main()
    Return Limits.Normalize(12)
End Sub

๋งค๊ฐœ๋ณ€์ˆ˜ ๋ฐ ์‹คํ–‰ ์„ค๋ช…:

value=12๊ฐ€ Limits.Normalize์™€ Clamp๋กœ ์ „๋‹ฌ๋ฉ๋‹ˆ๋‹ค. maximum=10์œผ๋กœ ์ œํ•œํ•ด ๋‘ ํ•จ์ˆ˜๋Š” Integer 10์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. Main์€ Normalize๋งŒ ํ˜ธ์ถœํ•˜๋ฉฐ ์™ธ๋ถ€ Limits.Clamp(12) ํ˜ธ์ถœ์€ ๊ธˆ์ง€๋ฉ๋‹ˆ๋‹ค.

2. ๋น„๊ณต๊ฐœ ํ•„๋“œ์™€ ์ง€์—ญ ๋ณ€์ˆ˜

# ํ•œ์ •์ž ์—†๋Š” VAR value=7์€ Store ๋‚ด๋ถ€์˜ ๋น„๊ณต๊ฐœ ํ•„๋“œ์ž…๋‹ˆ๋‹ค. Read๋Š” ํ•„๋“œ 7์„ ๋ฐ˜ํ™˜ํ•˜๊ณ  LocalValue๋Š” ์ž์‹ ์˜ value=9๋ฅผ ์„ ์–ธํ•ด ํ•„๋“œ๋ฅผ ๋ฐ”๊พธ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. Main์€ 7*10+9, Integer 79๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
Option Explicit On
Module Store
    Var value = 7
    Public Function Read()
        Return value
    End Function
    Public Function LocalValue()
        Var value = 9
        Return value
    End Function
End Module
Sub Main()
    Return Store.Read() * 10 + Store.LocalValue()
End Sub

๋งค๊ฐœ๋ณ€์ˆ˜ ๋ฐ ์‹คํ–‰ ์„ค๋ช…:

ํ•œ์ •์ž ์—†๋Š” VAR value=7์€ Store ๋‚ด๋ถ€์˜ ๋น„๊ณต๊ฐœ ํ•„๋“œ์ž…๋‹ˆ๋‹ค. Read๋Š” ํ•„๋“œ 7์„ ๋ฐ˜ํ™˜ํ•˜๊ณ  LocalValue๋Š” ์ž์‹ ์˜ value=9๋ฅผ ์„ ์–ธํ•ด ํ•„๋“œ๋ฅผ ๋ฐ”๊พธ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. Main์€ 7*10+9, Integer 79๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

3. ๊ณต๊ฐœ ์ƒ์ˆ˜์™€ ๋‚ด๋ถ€ ์นด์šดํ„ฐ

# Public Const increment=2๋Š” Counter.increment๋กœ ์ฝ์Šต๋‹ˆ๋‹ค. Private count๋Š” 1๋กœ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค. NextCount๋Š” increment๋ฅผ ๋”ํ•ด 3์„ ์ €์žฅํ•˜๊ณ  ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. Main์€ 3*10+2, Integer 32๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ์™ธ๋ถ€ Counter.count ์ ‘๊ทผ๊ณผ increment ๋ณ€๊ฒฝ์€ ๊ธˆ์ง€๋ฉ๋‹ˆ๋‹ค.
Option Explicit On
Module Counter
    Public Const increment = 2
    Private Var count = 1
    Public Function NextCount()
        count += increment
        Return count
    End Function
End Module
Sub Main()
    Var result = Counter.NextCount()
    Return result * 10 + Counter.increment
End Sub

๋งค๊ฐœ๋ณ€์ˆ˜ ๋ฐ ์‹คํ–‰ ์„ค๋ช…:

Public Const increment=2๋Š” Counter.increment๋กœ ์ฝ์Šต๋‹ˆ๋‹ค. Private count๋Š” 1๋กœ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค. NextCount๋Š” increment๋ฅผ ๋”ํ•ด 3์„ ์ €์žฅํ•˜๊ณ  ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. Main์€ 3*10+2, Integer 32๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ์™ธ๋ถ€ Counter.count ์ ‘๊ทผ๊ณผ increment ๋ณ€๊ฒฝ์€ ๊ธˆ์ง€๋ฉ๋‹ˆ๋‹ค.


en ยท ru ยท uk ยท fr ยท de ยท it ยท es ยท zh-tw ยท ja ยท ko

Basic