본문 바로가기

Programming

[Ruby] 클래스에 대한 간단한 설명

반응형

 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