조회 수 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 7374 1
32 중급강의실 맵으로 이동되었을때 자동으로 타이머 실행 3 물판 2014.05.01 1189 1
31 중급강의실 RPG XP에서 소를 집적타보자!! -일명 음모XP - (자작 이벤트) 7 BY_RAIN 2014.06.09 1168 0
30 중급강의실 잠와서 실수가 많은 저 게임만들고 싶어요 -1- 데이터베이스-1- 1 시버암 2014.06.14 1165 0
29 고급강의실 RPG Maker VX ACE - Skill 데이터 구조. JunkMan 2014.10.14 1156 0
28 고급강의실 [RPGMV Plugin 영상] 무작정 해보기 "심플ATB" 2 천무 2015.12.20 1156 0
27 고급강의실 아이템 한번에 받기  운 2014.08.24 1147 0
26 고급강의실 뮤's 실전 스크립팅 강좌 [3. 기초 문법 다지기 (하)] 6 마니아 2013.09.16 1145 0
25 중급강의실 데스티니 패치 연구 1~3 2 1 file 나라뜨 2012.05.05 1137 0
24 고급강의실 RPG Maker VX ACE - Actor 데이터 구조 JunkMan 2014.10.06 1064 0
23 고급강의실 RPG Maker VX ACE - System 데이터 구조 JunkMan 2014.10.15 1056 0
22 중급강의실 VX Ace 픽쳐 메뉴 예제(V1.01) 2 APED 2015.03.18 1053 0
21 고급강의실 배틀창 이름 체력 레벨 좌표 변경하기 1 Seed 2014.06.19 1032 0
20 초급강의실 [MV] Iavra Splash Video(스플래시/인트로영상 제작 시 스킵기능 부여 플러그인) file 이니군 2017.09.11 1001 0
19 중급강의실 픽쳐 서서히 등장! 픽쳐 서서히 퇴장! 4 치와도라 2015.04.29 965 2
18 중급강의실 네코플에서 VXA 선택지 잘리는 버그 해결하는법 file 심심치 2017.06.22 919 2
17 중급강의실 엽여비의 야매강좌- VXA : 기초강좌-VXA의 이해 3 엽여비소엽 2015.10.09 867 0
16 고급강의실 RPG Maker VX ACE - Weapon 데이터 구조. JunkMan 2014.10.15 848 0
15 고급강의실 [RGSS2 강좌] 기초편 1. 소개 file 천무 2016.01.10 845 0
14 고급강의실 RPG Maker VX ACE - Classes 데이터 구조. JunkMan 2014.10.07 836 0
13 고급강의실 RPG Maker VX ACE - Item 데이터 구조. JunkMan 2014.10.14 835 0
Board Pagination Prev 1 ... 4 5 6 7 8 9 10 Next
/ 10






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

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