본문 바로가기

STUDY/Fullstack-Bootcamp

[풀스택 부트캠프] 섹션 7. Ruby On Rails 웹개발 - 3. Ruby의 클래스

섹션 7. Ruby On Rails 웹개발 - 3. Ruby의 클래스

1) 절차지향
- 절차지향 : 순서에 따르는 방식 ex) C언어

- 절차지향의 단점 : 협업이 힘들고 유지보수가 힘들다.


2) 객체지향

- 객체지향 : 모듈을 만들어서 재사용하는 방식 ex) Java, Ruby

- Object Oriented Programming

- 클래스 : 부품 설계도

- 인스턴스(객체) : 실제 부품 (실제 메모리에 상주)

- 클래스를 통해 객체를 만드는 방식을 객체지향방식이라고 한다.


3) 객체지향의 특징

- 캡슐화 : 공통분모를 모아서 분류하여 하나의 클래스라는 개념을 만든다.

- 은닉화 : 내부를 공개하지 않는다.

- 상속 : 기존 캡슐화된 속성을 상속받고 내가 원하는 속성을 추가로 구현(Overriding)한다.

- 다형성 : 하나의 함수인데 들어가는 매개변수에 따라서 다른 결과가 나오도록 수행하게 하는 것을 Overloading이라고 한다.


4) Ruby 클래스 실습

1
2
3
4
5
6
7
8
9
10
11
12
class Car
    def initialize()
        @name = 'pong'
        end
        
        def print()
        puts @name
        end
    end
 
car = Car.new() 
car.print()
cs

- (줄 2) : initialize()는  이 클래스가 실제로 객체화될 때 자동으로 실행되는 메소드이다.

- (줄 11) : Car형 객체 car를 생성

- (줄 12) : car 출력.

>> 출력결과 : pong

: initialize() 메소드를 호출하지 않았지만 메소드가 자동으로 실행되었다.


5) 변수

- name : 지역변수, 하나의 scope 안에서만 재사용할 수 있다.

- @name : 인스턴스변수, 한 번 선언을 하면 그 클래스 안에서 계속 재사용할 수 있다.

- $name : 전역변수


6) 은닉화, getter, setter

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
class HelloWorld
    def initialize(lang)
        if lang == 'KR'
            @welcome = '안녕!'
            else
                @welcome = 'Hello!'
            end
        end
    def hello()
        puts @welcome
        end
    def setWelcome(welcome)
        @welcome = welcome
        end
    def getWelcome()
        return @welcome
        end
    end
 
hello = Helloworld.new('KR')
hello.hello()
hello.getWelcome()
 
hello2 = Helloworld.new('EN')
hello2.hello()
cs

- (줄 21) 실행결과 : 안녕!

- (줄 22) 실행결과 : 안녕!

- (줄 25) 실행결과 : Hello!


7) Overriding, 상속

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
class HelloWorld
    def initialize(lang)
        if lang == 'KR'
            @welcome = '안녕!'
            else
                @welcome = 'Hello!'
            end
        end
    def hello()
        puts @welcome
        end
    def setWelcome(welcome)
        @welcome = welcome
        end
    def getWelcome()
        return @welcome
        end
    end
 
class ExHelloworld < Helloworld
    def initialize(lang)
        if lang == 'CN'
            @welcome = 'Nihao!'
            elsif lang == 'JP'
            @welcome = 'Ohayo!'
            else
                super(lang)
            end
        end
    end
cs

- (줄 20~30) Helloworld 클래스를 상속하는 ExHelloworld 클래스를 생성한 것이다.

- (줄 27) super() : 클래스에 속성에서 기본적으로 존재하는 메소드이며 initialize 함수의 원본을 호출해주는 것이다.