ÃÑ ÆäÀÌÁö ¼ö : 3224
![]()
|
Facebook Joinc ±×·ì
Joinc QA »çÀÌÆ®
![]()
Tweet
joinc´Â Firefox¿Í chrome¿¡¼ Å×½ºÆ® Çß½À´Ï´Ù. IE¿¡¼´Â Å×À̺íÀÌ ±úÁö°Å³ª À̹ÌÁö°¡ º¸ÀÌÁö ¾ÊÀ» ¼ö ÀÖ½À´Ï´Ù. ƯÈ÷ ±¸±Û DocsÀ̹ÌÁöÀÇ °æ¿ì ¿¢¹Úó¸®µÉ ¼ö ÀÖ½À´Ï´Ù. 1 class
Ŭ·¡½º¿Í °´Ã¼ÁöÇâ¿¡ ´ëÇÑ ³»¿ëÀº ¸µÅ©¸¦ Âü°íÇϽðí¿ä. ¾ð¾î¸¦ ¸··ÐÇϰí Ŭ·¡½ºÀÇ »ç¾çÀº Å©°Ô ´Ù¸£Áö ¾ÊÀ¸¹Ç·Î, ´Ù¸¥ °´Á¦ ÁöÇâ¾ð¾î¸¦ ´Ù·é ÀûÀÌ ÀÖ´Ù¸é ½±°Ô ÀÌÇØÇÒ ¼ö ÀÖÀ» °Ì´Ï´Ù. ƯÈ÷ Java¿¡ Àͼ÷ÇÏ´Ù¸é ´õ ½±°Ô Ȱ¿ëÇÒ ¼ö ÀÖÀ» °Ì´Ï´Ù. 2 Ŭ·¡½º Á¤ÀÇ
·çºñ Ŭ·¡½º ºí·°Àº class¿Í end Ű¿öµå »çÀÌ¿¡ À§Ä¡ÇÕ´Ï´Ù. ƯÀÌÇÑ Á¡Àº Ŭ·¡½º À̸§ÀÇ Ã¹±ÛÀÚ´Â ¹Ýµå½Ã ´ë¹®ÀÚ¿©¾ß ÇÑ´Ù´Â °Ì´Ï´Ù. ¼Ò¹®ÀÚ¸é ¿¡·¯°¡ ¹ß»ýÇÕ´Ï´Ù. Ŭ·¡½º´Â º¸Åë ´ÙÀ½ÀÇ ±¸¼¿ä¼Ò¸¦ °¡Áý´Ï´Ù.
class MyClass def some_method end end 2.1 Instance Variables
ÀνºÅϽº º¯¼ö´Â Ŭ·¡½ºÀÇ ÀνºÅϽº¿¡¼ »ç¿ëÇÏ´Â º¯¼öÀÔ´Ï´Ù. °´Ã¼ º¯¼ö ȤÀº ¸â¹ö º¯¼ö¶ó°í ºÎ¸¨´Ï´Ù. ÀϹÝÀûÀ¸·Î ¸â¹ö º¯¼ö·Î »ç¿ëÇØ ¿Ô´Âµ¥, Ruby´Â ÀνºÅϽº º¯¼ö¶õ ¿ë¾î¸¦ ¼±È£ÇÏ´Â °Í °°½À´Ï´Ù. ¿©±â¿¡¼´Â ÀνºÅϽº º¯¼ö¶ó°í ºÎ¸¦ ÀÛÁ¤ÀÔ´Ï´Ù.
ÀνºÅϽº º¯¼ö´Â º¯¼ö À̸§ ¾Õ¿¡ @¸¦ ºÙÀÔ´Ï´Ù. #!/usr/bin/ruby
class MyClass
@one = 1
def do_something
@one = 2
end
def output
puts @one
end
end
instance = MyClass.new
instance.output
instance.do_something
½ÇÇà°á°ú´Â ´ÙÀ½°ú °°½À´Ï´Ù. nil 2³× output °ªÀÌ nilÀÌ ³ª¿É´Ï´Ù. ¿Ö 1ÀÌ ¾Æ´ÏÁö¶ó°í »ý°¢ÇÒ ¼ö Àְڴµ¥¿ä. ÀνºÅϽº º¯¼ö´Â ÀνºÅϽº¿¡¼¸¸ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ´Ù¸¥ ¾ð¾î´Â Ŭ·¡½º¿¡¼ º¯¼ö¸¦ »ç¿ëÇÒ ¼ö ¾øµµ·Ï ¸·°í ÀÖ½À´Ï´Ù. ¾Æ·¡ C++ Äڵ带 º¸ÁÒ #include <iostream>
class MyInfo
{
public:
int a = 1;
int b = 2;
};
int main()
{
MyInfo m;
cout << m.a << endl;
}
ÀÌ ÄÚµå´Â ÄÄÆÄÀϽà ¿¡·¯¸¦ ¹ß»ýÇÕ´Ï´Ù.instance.cpp:6:17: error: ISO C++ forbids initialization of member ¡®a¡¯ instance.cpp:6:17: error: making ¡®a¡¯ static instance.cpp:6:17: error: ISO C++ forbids in-class initialization of non-const static member ¡®a¡¯ instance.cpp:7:17: error: ISO C++ forbids initialization of member ¡®b¡¯ instance.cpp:7:17: error: making ¡®b¡¯ static instance.cpp:7:17: error: ISO C++ forbids in-class initialization of non-const static member ¡®b¡¯
Ruby´Â ¿¡·¯¸¦ ¹ß»ýÇÏÁö´Â ¾Ê´Âµ¥¿ä. ´ë½Å ±âº» °ªÀ¸·Î ÃʱâÈ µË´Ï´Ù. ±×·¡¼ ±âº» °ªÀÎ nilÀÌ Ãâ·ÂµÈ°ÅÁÒ. 3 Accessor Methods
ÀνºÅϽº º¯¼ö´Â ¹Ù±ù¿¡¼ Á÷Á¢ Á¢±ÙÇÒ ¼ö ¾ø½À´Ï´Ù. ¸Þ¼µå¸¦ ÀÌ¿ëÇØ¼ Á¢±ÙÇØ¾ß ÇÑ´Ù. ¸¸¾à ¹Ù±ù¿¡¼ Á÷Á¢ Á¢±ÙÇÏ°í ½Í´Ù¸é Accessor Methods¸¦ ¸¸µé¾î¼ »ç¿ëÇØ¾ß ÇÕ´Ï´Ù. #!/usr/bin/ruby
class MyClass
def initialize
@foo=28
end
def foo
return @foo
end
end
instance = MyClass.new
puts instance.foo
foo¸¦ ÀÐÀ» ¼ö ÀÖ½À´Ï´Ù. ÇÏÁö¸¸ ÀÐÀ» ¼ö¸¸ ÀÖ½À´Ï´Ù. ¸¸¾à °ªÀ» ¾²·Á°í ÇÏ¸é ¿¡·¯°¡ ¹ß»ýÇÒ°Ì´Ï´Ù.instance = MyClass.new puts instance.foo instance.foo = 496foo¿¡ 496À» ÀúÀåÇÏ·Á°í ÇÏ¸é ´ÙÀ½°ú °°Àº ¿¡·¯ ¸Þ½ÃÁö°¡ Ãâ·ÂµË´Ï´Ù. ./class.rb:18: undefined method `foo=' for #<MyClass:0xb76f98b8 @foo=28> (NoMethodError)
ÀÌ ¹®Á¦¸¦ ÇØ°áÇÏ´Â ¹æ¹ýÀº µÎ °¡Áö Àä. Çϳª´Â ¾²±â Á¢±ÙÀÌ °¡´ÉÇÑ Accessor Methods¸¦ ¸¸µå´Â °Ì´Ï´Ù. class MyClass
def initialize
@foo=28
end
def foo
return @foo
end
def foo=(value)
@foo = value
end
end
ÀÌ ¹æ½ÄÀº °£´ÜÇϱä ÇÕ´Ï´Ù¸¸ ÀνºÅϽº º¯¼ö°¡ Ãß°¡µÉ ¶§¸¶´Ù Á¢±ÙÀ» À§ÇÑ ¸Þ¼µå Äڵ带 ¸¸µé¾îÁà¾ß ÇÑ´Ù´Â ´ÜÁ¡ÀÌ ÀÖ½À´Ï´Ù. ¹ø°Å·ÓÁÒ. ±×·¡¼ attr_accessorÀ» ÀÌ¿ëÇØ¼ Á¢±ÙÀÚ ¸Þ¼µå¸¦ Á¤ÀÇÇÏ´Â ÀÏÀ» ÀÚµ¿À¸·Î ÇÒ ¼ö ÀÖ½À´Ï´Ù.#!/usr/bin/ruby
class MyClass
attr_accessor :foo
def initialize
@foo=28
end
end
instance = MyClass.new
puts instance.foo
instance.foo = 496
puts instance.foo
ÈξÀ °£´ÜÇØ Á³±º¿ä.
ÇÏÁö¸¸ Accessor ¸Þ¼µå¸¦ »ç¿ëÇÒ °æ¿ì ¾òÀ» ¼ö ÀÖ´Â ÀåÁ¡ÀÌ ÀÖ½À´Ï´Ù. ¸Þ¼µåÀ̱⠶§¹®¿¡ ¾òÀ» ¼ö ÀÖ´Â ÀåÁ¡Àä. ÇÊ¿äÇÑ ¿¬»êÀ» ÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÔ·Â °ªÀ» ¹Ý¿Ã¸² ÇØ¼ ÀúÀåÇÏ´Â ÄÚµåÀÔ´Ï´Ù. class MyClass
def initialize
@foo=28
end
def foo
return @foo
end
def foo=(value)
@foo = value.round
end
end
instance = MyClass.new
puts instance.foo
instance.foo = 496.6
puts instance.foo
3.1 Ŭ·¡½º º¯¼ö
Ŭ·¡½º º¯¼ö´Â À̸§¾Õ¿¡ @@¿¬»êÀÚ¸¦ ºÙ¿©¼ ¸¸µì´Ï´Ù. ÀÌ º¯¼ö´Â ¸ðµç Ŭ·¡½º ÀνºÅϽº¿¡¼ ÇÔ²² »ç¿ëÇϴµ¥¿ä. C++À̳ª JavaÀÇ static º¯¼ö¿Í ºñ½ÁÇÏ´Ù°í º¸½Ã¸é µË´Ï´Ù. #!/usr/bin/ruby
class MyClass
@@value =1
def add_one
@@value = @@value +1
end
def value
@@value
end
end
instanceOne = MyClass.new
instanceTwo = MyClass.new
puts instanceOne.value
instanceOne.add_one
puts instanceOne.value
puts instanceTwo.value
Ãâ·Â °ªÀÔ´Ï´Ù.1 2 2 3.2 Class instance Variables
ÀÌ°Ç Á» »ìÆìºÁ¾ß ÇÒ °Í °°½À´Ï´Ù. ¾Ëµí ¾Ëµí ÇÏ¸é¼ ¸íÈ®ÇÏÁö°¡ ¾Ê¾Æ¼¿ä. 3.3 Ŭ·¡½º ¸Þ¼µå
Ŭ·¡½º ¸Þ¼µå¿Í ÀϹÝÀûÀÎ ¸Þ¼µå¿Í µ¿ÀÏÇÑ ¹æ¹ýÀ¸·Î ¼±¾ðÇÕ´Ï´Ù. self°¡ ºÙ´Â °ÍÀ¸·Î ÀÌ µÑÀ» ±¸ºÐÇÕ´Ï´Ù. Ŭ·¡½º ¸Þ¼µå´Â Ŭ·¡½º ÀνºÅϽº¸¦ ¸¸µéÁö ¾Ê°íµµ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. c++ÀÇ static ¸Þ¼µå¿Í ºñ½ÁÇÕ´Ï´Ù. static ¸Þ¼µå¿Í ¸¶Âù°¡Áö·Î Ŭ·¡½º º¯¼ö¸¦ »ç¿ëÇÒ ¼ö ¾ø½À´Ï´Ù. class MyClass
def self.some_method
puts 'something'
end
end
MyClass.some_method
3.4 ÀνºÅϽº
ÀνºÅϽº´Â Ŭ·¡½º·Î ºÎÅÍ ¸¸µå´Â °´Ã¼·Î, ÀνºÅϽº°¡ ¸¸µé¾îÁö´Â °úÁ¤À» instantiation'À̶ó°í ÇÕ´Ï´Ù. ·çºñ´Â ¾Æ·¡¿Í °°ÀÌ ÀνºÅϽº¸¦ ¸¸µì´Ï´Ù. anObject = MyClass.new(parameters)
Ŭ·¡½º´Â ÀνºÅϽº¸¦ »ý¼ºÇÒ ¶§ ÀÚµ¿À¸·Î ½ÇÇàµÉ ÇÔ¼ö¸¦ Á¤ÀÇÇÒ ¼ö Àִµ¥¿ä, ÀÌ ÇÔ¼öÀÇ À̸§ÀÌ initializeÀÔ´Ï´Ù. C++ÀÇ »ý¼ºÀÚ¿Í ºñ½ÁÇÏÁÒ. »ý¼ºÀÚ¿Í ¸¶Âù°¡Áö·Î ¸Å°³ º¯¼ö¸¦ °¡Áú ¼ö ÀÖ½À´Ï´Ù. class MyClass def initialize(parameters) end end 4 Declaring Visibility
·çºñ ¸Þ¼µåµéÀº C++, Java¿Í °°Àº ¾ð¾î¿Í ¸¶Âù°¡Áö·Î public, private, protected 3°³ÀÇ visibility ¸ðµå¸¦ °¡Áö°í ÀÖ½À´Ï´Ù. hidden ¹æ½ÄÀ̶ó°í º¸¸é µÉ °Í °°Àºµ¥¿ä. hiddenÀº °´Ã¼ÁöÇâÀÇ ´ëÇ¥ÀûÀΠƯ¡ÀÌÁÒ. hidden ¼Ó¼ºÀ» Á¶ÀýÇÔÀ¸·Î¼, °´Ã¼´Â ¼Ó¼º°ú ¸Þ¼µå¸¦ ¾ÈÀüÇÏ°Ô ¿î¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. 4.1 Private
private´Â ¸Þ¼µå¿Í º¯¼ö¿¡ hidden ¼Ó¼ºÀ» ºÎ¿©ÇÑ´Ù°í º¸½Ã¸é µË´Ï´Ù. ¿ÜºÎ¿¡¼ Á¢±ÙÇÒ ¼ö ¾ø½À´Ï´Ù. private·Î ¼±¾ðµÈ º¯¼ö´Â ¸Þ¼µå¸¦ ÅëÇØ¼¸¸ °£Á¢ÀûÀ¸·Î Á¦¾î°¡ °¡´ÉÇÕ´Ï´Ù.
ÀÚµ¿Â÷¶ó´Â °´Ã¼°¡ ÀÖ´Ù°í °¡Á¤ÇØ º¾½Ã´Ù. ÀÚµ¿Â÷´Â ¼Óµµ¶ó´Â ¼Ó¼ºÀ» °¡Áö°í ÀÖÀ» °Çµ¥¿ä. ÀÌ°É ¿ÜºÎ¿¡¼ Á÷Á¢ Á¢±ÙÇϵµ·Ï ÇÏ¸é ¾ÈµÇ°ÚÁÒ. ³í¸®ÀûÀ¸·Îµµ ¸ÂÁö ¾Ê½À´Ï´Ù. ¼Óµµ´Â ¿¢¼¿·¹ÀÌÅÍ¿Í ºê·¹ÀÌÅ©¸¦ ÅëÇØ¼¸¸ Á¢±ÙÇØ¾ß °ÚÁÒ. Ŭ·¡½º¶ó¸é ¿¢¼¿ ¸Þ¼µå¿Í ºê·¹ÀÌµå ¸Þ¼µå¸¦ ÀÌ¿ëÇØ¼ Á¢±ÙÇϵµ·Ï ÇØ¾ß ÇÏÁÒ. ¼Óµµ´Â private·Î ¼û°Ü¾ß ÇÏ´Â ¼Ó¼ºÀÎ °ÅÁÒ.
·çºñ¿¡¼ÀÇ privateµµ °°Àº ¸ñÀûÀ¸·Î »ç¿ëÇÕ´Ï´Ù. ¸Þ¼µå¿Í º¯¼ö¸¦ ¼û±â±â À§Çؼ »ç¿ëÇÕ´Ï´Ù. private·Î ¼±¾ðÇÏ´Â ¹æ¹ýÀº ´ÙÀ½°ú °°½À´Ï´Ù. class Example
def methodA
end
private # ¾Æ·¡ÀÇ ¸ðµç ¸Þ¼µåµéÀº private ÀÔ´Ï´Ù.
def methodP
end
end
private Ű¿öµå¸¦ ´Üµ¶À¸·Î »ç¿ëÇÒ °æ¿ì ¾Æ·¡ÀÇ ¸ðµç ¸Þ¼µåµéÀº private°¡ µË´Ï´Ù. ¼±ÅÃÀûÀ¸·Î Àû¿ëÇÏ°í ½Í´Ù¸é ¾Æ·¡¿Í °°ÀÌ ÇÏ¸é µË´Ï´Ù. class Example
def methodA
end
def methodP
end
private :methodP
end
methodP¸¦ private ¼Ó¼ºÀ¸·Î ¼±¾ðÇß½À´Ï´Ù.
Ŭ·¡½º ¸Þ¼µåÀÇ °æ¿ì¿¡´Â private_class_method¸¦ »ç¿ëÇÒ ¼öµµ ÀÖ½À´Ï´Ù. ƯÀÌÇÑ °ÍÀº new ¸Þ¼µåµµ private·Î ¼±¾ðÇÒ ¼ö ÀÖ´Ù´Â °Çµ¥¿ä. ÁÖ·Î singleton Ŭ·¡½º¸¦ ¸¸µé±â À§Çؼ »ç¿ëÇÕ´Ï´Ù. new¸¦ »ç¿ëÇÏ´Â ´ë½Å »ç¿ëÀÚ Á¤ÀÇ ¸Þ¼µå¸¦ »ç¿ëÇϵµ·Ï °Á¦ÇÏ´Â ½ÄÀÌÁÒ. new°¡ ¼û°ÜÁö¹Ç·Î ¿À·ù¸¦ ÁÙÀÏ ¼ö ÀÖ½À´Ï´Ù. #!/usr/bin/ruby
class SingletonLike
private_class_method :new
@num
@@inst = nil
def initialize
@num = 0
end
def SingletonLike.create
@@inst = new unless @@inst
return @@inst
end
def add_one
@num = @num+1
return @num;
end
end
args = "1"
block = nil
mySingle1 = SingletonLike
mySingle2 = SingletonLike
puts mySingle1.create.add_one
puts mySingle2.create.add_one
4.2 public
public´Â ±âº» hidden ¼Ó¼ºÀÔ´Ï´Ù. ÀÚÀ¯·Ó°Ô Á¢±ÙÇÒ ¼ö ÀÖ½À´Ï´Ù. 4.3 protected
C++À̳ª JavaÀÇ protected¿Í ´Ù¸£Áö ¾Ê½À´Ï´Ù. ÀڽŰú ¼ºêŬ·¡½ºµéÀÌ Á¢±ÙÇÒ ¼ö ÀÖÀ¸¸ç, ¿ÜºÎ¿¡¼´Â Á¢±ÙÇÒ ¼ö ¾ø½À´Ï´Ù. ÀÌ°Ç Á» ÀڷḦ ´õ ã¾Æº¸°í Á¤¸®ÇØ¾ß ÇÒµí 5 »ó¼Ó
Ŭ·¡½º´Â ½´ÆÛ Ŭ·¡½º (ºÎ¸ð Ŭ·¡½º ȤÀº º£À̽º Ŭ·¡½º¶ó°íµµ ÇÑ´Ù.)·ÎºÎÅÍ ¸Þ¼µå¿Í º¯¼ö¸¦ »ó¼Ó¹ÞÀ» ¼ö ÀÖ½À´Ï´Ù. ·çºñ´Â ´ÙÁß »ó¼ÓÀ» Áö¿øÇÏÁö ¾Ê½À´Ï´Ù. ´ÜÁö ÇϳªÀÇ ½´ÆÛ Ŭ·¡½º¸¸ °¡Áú ¼ö ÀÖ½À´Ï´Ù. #!/usr/bin/ruby
class Car
def transport_class
puts 'Car'
end
end
class Bus < Car
def sub_class
puts 'Bus'
end
end
myCar = Bus.new
myCar.transport_class
myCar.sub_class
Ãâ·Â :Car Bus
private ¼Ó¼ºÀÇ º¯¼ö¿Í ¸Þ¼µå°¡ ¾Æ´Ï¶ó¸é ½´ÆÛ Ŭ·¡½º·ÎºÎÅÍ ÀÚ½Ä Å¬·¡½º·Î »ó¼Ó °¡´ÉÇÕ´Ï´Ù.
ºÎ¸ð Ŭ·¡½ºÀÇ ¸Þ¼µå´Â ¿À¹ö¶óÀ̵åÇÒ ¼ö Àִµ¥¿ä. super Ű¿öµå¸¦ ÀÌ¿ëÇØ¼ ¿©Àü½Ã ºÎ¸ðŬ Ŭ·¡½ºÀÇ ¸Þ¼µå¸¦ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. #!/usr/bin/ruby
class Car
def iniitialize
end
def transport_class
puts 'Car'
end
end
class Bus < Car
def sub_class
puts 'Bus'
end
def transport_class
super
puts "This is My Car Class"
end
end
Bus.new.transport_class
Ãâ·Â Car This is My Car Class
ºÎ¸ð Ŭ·¡½ºÀÇ ¸Þ¼µå¿¡ ´ëÇØ¼ alias¸¦ ÁÙ ¼ö Àִµ¥, ÀÌ ±â´ÉÀ» ÀÌ¿ëÇÏ¸é »ó¼Ó ¸Þ¼µå¸¦ Á» ´õ ÀÚÀ¯·Ó°Ô »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. #!/usr/bin/ruby
class Car
def iniitialize
end
def transport_class
"Car"
end
end
class Bus < Car
alias xCar transport_class
def sub_class
puts 'Bus'
end
def transport_class
print xCar, " : This is My Bus\n"
end
end
Bus.new.transport_class
Ãâ·ÂCar : This is My Bus 5.1 ¸ðµâ »ç¿ëÇϱâ
¸ðµâÀº Ŭ·¡½º¿Í ¸¶Âù°¡Áö·Î ¸Þ¼µå, ´Ù¸¥ ¸ðµâ, Ŭ·¡½º¸¦ Æ÷ÇÔÇÒ ¼ö ÀÖ½À´Ï´Ù. ÇÏÁö¸¸ Ŭ·¡½º´Â ¾Æ´Õ´Ï´Ù. µû¶ó¼ ÀνºÅϽº¸¦ ¸¸µé°Å³ª ÇÒ ¼ö´Â ¾ø½À´Ï´Ù. C++ÀÇ namespace¿Í ºñ½ÁÇÏ´Ù°í º¸¸é µÉ °Í °°Àºµ¥¿ä.
module A
def a1
puts 'a1 is called'
end
end
module B
def b1
puts 'b1 is called'
end
end
module C
def c1
puts 'c1 is called'
end
end
class Test
include A
include B
include C
def display
puts 'Modules are included'
end
end
object=Test.new
object.display
object.a1
object.b1
object.c1
Ãâ·ÂModules are include a1 called b1 called c1 called |
|
|
|
EmailÀ» ±âÀÔÇϸé, ´ñ±ÛÀÌ ¸ÞÀÏ·Î Àü´ÞµË´Ï´Ù. |
|