반응형
2년인가 3년만에 다시보면서 클래스에 대해서 간단히 정리해 보겠습니다.
기본 정의
class Person
end
생성자 포함 (멤버변수 name 추가)
class Person def initialize(name) @name = name end def getName return @name end end
객체생성
class Person def initialize(name) @name = name end def getName return @name end end person = Person.new("YHG") puts person.getName
속성 1
def name() 은 읽기 속성으로 name은 읽기만 가능 하다는 것입니다.
def name=(name) 은 쓰기 속성으로 name을 쓰기만 가능 하다는 것입니다.
하나만 사용해도 되고 이렇게 같이 사용해도 됩니다
class Person def name() @name end def name=(name) @name = name end def initialize(name) @name = name end def getName return @name end end
속성 2
속성 1에서 사용했던 읽기, 쓰기 속성은 다음과 같이 간단하게 사용이 가능합니다.
class Person attr_reader : name attr_writer : name def initialize(name) @name = name end def getName return @name end end
속성 3
읽기와 쓰기 둘다 사용할 경우 attr_accessor로 한번에 선언이 가능합니다.
class Person attr_accessor : name def initialize(name) @name = name end def getName return @name end end
상속
class Male < Person def initialize(name,age) super(name) @age = age end def getAge return @age end end
접근 권한 제한
c++과 마찬가지로 3가지의 권한이 존재합니다.
public, protected, private
기본 내용은 c++과 같습니다.
클래스 변수
c++의 static 객체변수 입니다. 같은 Class에서는 단 하나의 변수만 존재합니다. 즉 A 라는 Class로 생성한 모든 Object는 그 변수를 공유하게 됩니다.
@name 은 일반 객체변수 이지만 @@name은 클래스 변수 입니다.
클래스 메소드
C++의 static method 와 같습니다.
class Math def Math.add(numA, numB) return numA + numB end end
모듈
" 여러개의 클래스를 조작하는 코드를 작성하는 대신 모듈이 제공하는 메소드들만을 사용하여 코드를 작성할 수 있다. " 라고 책에 나와 있는데... 아직 잘 모르겠습니다... 그러므로 패스~
혼합
모듈은 객체를 생성할 수 없기 때문에 혼합을 통하여 객체를 생성 할 수 있다고 합니다. 혼합을 이용하여 다중 상속을 흉내 낼수 있다고 합니다.
반응형
'Programming' 카테고리의 다른 글
Syntax Highlighter 2.0 설치하기 (0) | 2010.06.25 |
---|---|
[Java] 실수형 소수점 (0) | 2010.03.15 |
[WSP] DB Modeling (0) | 2010.01.07 |
[WSP] ERD (0) | 2010.01.06 |
[WSP] Web Start Page (0) | 2010.01.06 |