조회 수 1642 추천 수 0 댓글 4
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄 수정 삭제
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄 수정 삭제
루비에서 다루는 모든데이터는 오브젝트라고 불립니다.
예약어에서 메소드, 함수, 캐릭터라인 등

1. 클래스

또 비슷한 효과를 내는 오브젝트를 묶은것을 클래스라고 하는데, 예를 들면 화면출력 오브젝트는 그래픽 클래스, 캐릭터라인은 스트링 클래스에 속해있는것 처럼 클래스의 리스트는 알만xp의 도움말인 rgss 레퍼런스에서 열람할수있습니다.
보통 특정 클래스에 속한 오브젝트를 강조하기위해 그 클래스의 인스턴스라고 부르기도 합니다. 

일단 테스트삼아 string 클래스가 어떻게 구성되어있는지 봅시다.
 본문 전부를 불러오면

이렇게 됩니다.

String

캐릭터 라인 클래스. 임의의 길이가 바이트열을 취급하는 것이 � . 캐릭터 라인 리터럴을 참조해 주세요.

String 클래스는 자신을 바이트열로서 취급합니다. 멀티 바이트 캐릭터 라인으로부터 1 문자씩 꺼내고 싶은 경우는 scan(/. /) 등을 사용합니다.

슈퍼 클래스

#슈퍼 클래스는 그 클래스의 상위 클래스정도로 생각하면 됩니다.

인클루드 하고 있는 모듈

 

#이것들은 이 string 클래스 안에 들어있는 모듈을 말합니다. 모듈은 메서드의 모음으로 하나의 시스템을 작용을 합니다.

#이제 메서드의 목록입니다.

메소드

 
empty?

캐릭터 라인이 하늘 (즉 길이 0) 때, 진을 돌려줍니다.

 
length
size

캐릭터 라인의 바이트수를 돌려줍니다. 


upcase
upcase!

캐릭터 라인중의 알파벳 소문자를 모두 대문자에 옮겨놓습니다.

upcase 는 치환 후의 캐릭터 라인을 생성해 돌려줍니다. upcase! (은)는 self 를 변경해 돌려줍니다만, 치환이 오코시 이거 참 없었던 경우는 nil 를 돌려줍니다.




원래는 더 복잡한 내용이 더있지만 지금 이해할수있는 메서드는 이정도인것같군요. 여기서 간단한걸 뽑아서 한번 주물럭거려봅시다.

a = "Ruby"

p a.size        # => 4

size 메서드는 캐릭터라인의 바이트수를 돌려주는 메서드입니다. 영문자인 반각문자는 1문자에 1바이트이니 영문자 4개는 4바이트가 되겠지요. 따라서 size  메서드가 4를 출력해줍니다. 



2. 슈퍼 클래스

루비에서 모든것은 오브젝트라고 했었는데, 정수는 fixnum의 인스턴스입니다.  인스턴스는 그 클래스의 전용 오브젝트 라고 했었지요.

fixnum의 메서드 리스트를 보면 메서드가 두개뿐입니다.  아니 정수를 관리하는 인스턴스인데 메서드 두개로 어떻게 관리하느냐 궁금한 분들도 있을지 모르겠습니다. 

일단 fixnum을 파해치기위해 fixnum의 슈퍼클래스인 Integer로 가봅시다.
Integer 클래스에는 chr이라는 메서드가 있습니다. 이것은 문자 코드에 대응하는 1 바이트의 캐릭터 라인을 돌려줍니다. 
예를 들어 65. chr 는 "A" 를 돌려줍니다. 
정수는 0 에서 255 의 범위내가 아니면 되지 않습니다. 범위외의 정수에대한 호출은 에러가 나게됩니다 

a = 65

p a.chr         # => "A"

정수는 fixnum 클래스의 인스턴스인데 integer 클래스의 인스턴스인 chr 을 불러와도 에러가 나지않는 이유는 상위 클래스는 하위클래스의 인스턴스를 계승할수있습니다. 따라서 저런 식이 성립되는것이지요.  

계승이라고 하는것은 클래스에 다른 새로운 클래스를 만드는것입니다. 원래있던 클래스를 슈퍼클래스, 새로만들어진 클래스를 서브클래스 라고합니다. 따라서 fixnum 클래스는  integer 의 서브 클래스가 되는것입니다. 
 fixnum 클래스는 integer 클래스의 메서드와 또 반대의 경우도 호출할수있고 또 integer 클래스의 슈퍼클래스인 Numeric 클래스도, 
또 그 슈퍼클래스인 Object 클래스도 fixnum 클래스의 메서드를 호출할수있습니다.

왜 이렇게 클래스를 어차피 분할 할거면서 공유해 놓았냐고 물으신다면 예를 하나 들어드릴수있겠습니다.
예를 들면 부동소수점수는 Float 클래스의 인스턴스에 속합니다. Float 클래스의 슈퍼클래스는 Numeric 클래스입니다. 또 정수는 fixnum 클래스의 인스턴스입니다.  fixnum 클래스는 Numeric 클래스의 서브클래스고요.
정수와 부동소수점수는 수를 표기한다는것으로 근본적인면에서는 비슷하지만 사실상 완전 다른 개념입니다.  만약 모두 완전 다른 클래스로 넣게된다면, 정수와 부동소수점수의 공통점 또한 소멸시키는것으로, 같은 내용을 다른클래스에 두번 적어야하는 상황이 벌어질수도 있기 때문에 그 같은내용을 Numeric 클래스로 정의 하는걸로 두번 일하지않아도 되는겁니다.
?

List of Articles
번호 분류 제목 글쓴이 날짜 조회 수 추천 수
공지 초급강의실 게임제작강좌 A-Z 색인 (2016.1.24 ver) 2 file 천무 2016.01.12 7342 1
32 고급강의실 RGSS 스크립트 강좌 입문 13 - 클래스(Class) 5 마니아 2013.09.16 2317 2
31 고급강의실 RGSS 스크립트 강좌 입문 12 - 연상 배열(Associative Array) 4 마니아 2013.09.16 1600 1
30 고급강의실 RGSS 스크립트 강좌 입문 11 - 배열(Array) 6 마니아 2013.09.16 1701 1
29 고급강의실 RGSS 스크립트 강좌 입문 10 - 그래픽 표시 4 마니아 2013.09.16 2183 0
» 고급강의실 RGSS 스크립트 강좌 입문 9 - 오브젝트(Object) 4 마니아 2013.09.16 1642 0
27 고급강의실 RGSS 스크립트 강좌 입문 7 ~ 8 - 함수(Function) 3 마니아 2013.09.16 1924 0
26 고급강의실 RGSS 스크립트 강좌 입문 6 - 루프(Loop) 2 마니아 2013.09.16 1586 0
25 고급강의실 RGSS 스크립트 강좌 입문 5 - 조건분기 4 마니아 2013.09.16 2131 0
24 고급강의실 RGSS 스크립트 강좌 입문 4 - 캐릭터 라인 4 마니아 2013.09.16 2274 1
23 고급강의실 RGSS 스크립트 강좌 입문 3 - 메서드(Method) 4 마니아 2013.09.16 1876 0
22 고급강의실 RGSS 스크립트 강좌 입문 2 - 수 3 마니아 2013.09.16 2256 0
21 고급강의실 RGSS 스크립트 강좌 입문 1 - 기초 개념 8 마니아 2013.09.16 4346 0
20 고급강의실 뮤's 실전 스크립팅 강좌 [5. 실전! 반복문을 응용하자!] 2 마니아 2013.09.16 1411 0
19 고급강의실 뮤's 실전 스크립팅 강좌 [4. 실전! 플래싱 메시지를 만들어보자] 3 마니아 2013.09.16 2081 0
18 고급강의실 뮤's 실전 스크립팅 강좌 [3. 기초 문법 다지기 (하)] 6 마니아 2013.09.16 1145 0
17 고급강의실 뮤's 실전 스크립팅 강좌 [2. 기초 문법 다지기 (중)] 3 마니아 2013.09.16 1371 0
16 고급강의실 뮤's 실전 스크립팅 강좌 [1. 기초 문법 다지기 (상)] 6 마니아 2013.09.16 2351 0
15 고급강의실 RGSS2 강좌 1 비형랑 2012.10.01 2528 0
14 중급강의실 [RPGVX ACE] 소재규격과 강의수록 1 2 비형랑 2012.10.01 3272 0
13 초급강의실 [RPG VX ACE] 초심자강의 1 1 비형랑 2012.10.01 3168 2
Board Pagination Prev 1 ... 4 5 6 7 8 9 10 Next
/ 10






[개인정보취급방침] | [이용약관] | [제휴문의] | [후원창구] | [인디사이드연혁]

Copyright © 1999 - 2016 INdiSide.com/(주)씨엘쓰리디 All Rights Reserved.
인디사이드 운영자 : 천무(이지선) | kernys(김원배) | 사신지(김병국)