Dec 162013
 

루비(Ruby)언어 정리

소스코드를 통하여 주요한 기능만 확인해보고 넘어간다.

클래스와 객체

class Car
    @@run_car = 0  # 클래스 변수 / static 변수

    attr_reader :pos    # 읽기 전용 속성(attribute)
    attr_writer :pos    # 쓰기 전용 속성
    attr_accessor :light # 읽기/쓰기 가능 속성

    def initialize(color) # 생성자
        @color = color  # @는 멤버변수 없는 것은 지역변수
    end

    def get_color
        return @color
    end

    def get_run_car
        return @@run_car
    end

    def Car.run(num)  # 클래스 메소드 | static 함수
        @@run_car += num
    end

    def id_car()  # id_car값 반환 접근자 메소드
        @id_car
    end

    def id_car=(id_car)  # pos값 쓰기 접근자 메소드
        @id_car = id_car
    end

protected # 메소드 공개 범위 (JAVA와 같음)
    def alaram
    end

private # 메소드 공개 범위 (JAVA와 같음)
    def check 
    end
end

class SuperCar < Car   # 상속
   def initialize(color)
       super(color)  # 부모 생성자 호출
   end

   def get_color
       return "red"
   end
end

supercar = SuperCar.new("blue") # 인스턴스 생성
Car.run(100) # 클래스 메소드 호출 

모듈

module Computer
    def Computer.buy(com)
        puts com + " buy"
    end

    class CPU
        def CPU.run
            puts cpu + " run"
        end
    end
end

include "computer.pb" # 외부 루비 파일 입포트
Computer.buy "Alpha"
Computer::CPU.run   # module의 class는 ::을 이용하여 접근한다.

모듈 혼합

module LeftClick
    def lclick
        puts "Left Clicked"
    end
end

module RightClick
    def rclick
        puts "Right Clicked"
    end
end 

class Mouse
    include LeftClick
    include RightClick
end

mouse = Mouse.new() # Mouse는 LeftClick, RightClick 2가지 기능이 혼합된다. (다중상속), Module은 인스턴스 생성이 불가하나 Mouse는 class이므로 가능

 Leave a Reply

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

(required)

(required)

This site uses Akismet to reduce spam. Learn how your comment data is processed.