본문 바로가기

프로그래밍/Ruby6

[Ruby/루비] 클래스 정의하기 / 믹스인 작성하기 - 클래스 루비는 자바, C#, C++과 마찬가지로 클래스와 객체를 갖습니다. 객체지향에 대해 설명할 때 신이 사람을 만들면서 사람이라는 클래스를 가지고 고유한 사람 A, B, C(객체)를 만들었다고 했었습니다. 즉, 클래스는 객체의 템플릿입니다. 루비의 클래스는 C++과는 다르게 superclass라고 불리는 오직 하나의 부모로부터만 상속할 수 있습니다. 다음을 살펴봅시다. 객체는 클래스로부터 만들어지고, 4의 클래스는 Integer입니다. Integer는 Numeric, Object, 그리고 궁극적으로는 BasicObject라는 클래스를 상속합니다. 위는 이러한 클래스들이 어떻게 관련을 맺는지 확인할 수 있습니다. 위의 관계를 그림으로 그려보면 다음과 같습니다. 해당 모델은 Ruby 1.8.7 버전에.. 2020. 8. 20.
[Ruby/루비] 코드 블록과 yield 코드 블록은 이름이 없는 함수를 뜻하며, 코드 블록을 어떤 함수나 메서드에 매개변수로 전달할 수 있습니다. 아래를 살펴봅시다. 이전에 숫자 3은 Integer 객체라고 배웠고, times는 Integer에 정의된 메서드입니다. times 메서드는 다음에 오는 코드 블록을 넘겨 받아 주어진 내용은 숫자만큼 반복합니다. 코드 블록은 { } 중괄호를 사용하거나 아래와 같이 do/end를 사용해서 만들 수도 있습니다. times를 두 번 호출해보았는데, 메서드는 소괄호가 있어도 되고, 없어도 됩니다. 흔히 코드 블록이 한 줄로 표현이 되면 중괄호를 사용하고, 한 줄이 넘어가면 do/end를 사용합니다. 코드 블록은 하나 혹은 그 이상의 매개변수를 받아들일 수 있습니다. 위 코드는 루비에게 배열 안에 있는 모든 .. 2020. 7. 31.
[Ruby] 루비의 함수 / 배열 / 해시 - 함수 정의하기 루비는 자바나 C#과 달리, 함수를 정의하기 위해서 클래스를 따로 정의할 필요가 없습니다. 그냥 콘솔 위에서 함수를 정의할 수도 있습니다. 모든 함수는 어떤 값을 리턴합니다. 명시적인 리턴 값을 설정하지 않으면, 함수 안에 존재하는 마지막 표현이 나타내는 값이 자동적으로 리턴됩니다. 다른 것과 마찬가지로 함수 역시 루비에서는 하나의 객체입니다. 추후에 더 자세히 알아보도록 하겠습니다. - 배열 배열은 루비에서 많은 역할을 담당합니다. 루비의 배열은 상당히 자유롭습니다. 정의되지 않은 배열 요소에 접근하면, 루비는 에러를 발생하는 것이 아니라 단순히 nil을 리턴합니다. C나 C++과는 다르게 인덱스로 음수를 사용할 수 있습니다. animals[-1]은 뒤에서 첫 번째 요소를 리턴하고, .. 2020. 7. 30.
[Ruby] 루비의 프로그래밍 모델 / 결정(Decision) / 타이핑 모델 - 프로그래밍 모델 루비는 순수한 객체지향 언어입니다. 아래는 숫자에 대한 간단한 객체를 보여주고 있습니다. 이것은 루비가 이 개념을 얼마나 철저하게 구현했는지 확인할 수 있습니다. 루비에서는 개별적인 숫자를 포함한 거의 모든 것이 객체입니다. 숫자는 Interger라는 클래스를 사용하는 객체인 것이죠. 그리고 methods라는 이름의 메서드를 호출하면 그 객체가 가지고 있는 메서드의 배열이 리턴됩니다(루비는 대괄호를 이용하여 배열을 표시함). 점만 찍으면 객체의 어떤 메서드라도 마음껏 호출할 수 있습니다. 아래는 문자열에 대한 객체 정보입니다. - 결정(Decision) / boolean expression 프로그램은 어떤 결정을 내리기 위해 존재하며, 결정을 내리는 과정은 우리가 코딩하고 생각하는 방.. 2020. 7. 29.
[Ruby] 루비 설치하기(Windows 10/윈도우 10) / 예제 맛보기 - Windows/윈도우에서 루비 설치하기 루비 설치는 아래 홈페이지에서 RubyInstaller를 다운받으면 설치가 가능합니다. https://www.ruby-lang.org/en/downloads/ 오른쪽에 보면 Ruby+Devkit 2.6.x 버전을 추천한다고 하며, Devkit은 수 많은 Gem을 제공하며 C 확장 모듈이 있는 Gem을 즉시 컴파일 할 수 있다고 합니다. 당장 필요한 내용은 아닌 것 같고, 웹 프레임워크인 루비 온 레일즈까지 사용하게 되면 알아봐야겠습니다. (개발을 위해서 여러 환경을 구성하려면 with devkit버전으로 받아서 설치하면 될 것 같습니다.) 그래서 저는 Ruby+Devkit 2.6.6-1(x64)을 다운받아서 설치했습니다. 라이센스 동의를 하고 Next 클릭. -.. 2020. 7. 28.
[Ruby] 루비란 ? - 루비는 어떤 언어인가 루비는 1993년 마츠모토 유키히로에 의해서 만들어졌습니다. 루비는 인터프리트되고, 객체지향적(OOP)이며, 동적 타이핑 시스템을 사용하는 언어입니다. 인터프리트가 된다는 말은 컴파일러에 의해서 코드가 기계어로 번역되는 것이 아닌, 원시코드가 인터프리터에 의해서 한 줄씩 읽어서 실행할 수 있다는 것입니다. (참조 : 인터프리터 - 위키백과) 동적 타이핑을 사용한다는 것은 자료형(type)이 컴파일 시간이 아닌 실행 시간에 결정된다는 의미입니다. 위 두 가지 방식은 유연성을 위해 안전성을 포기한 트레이드오프라고 할 수 있습니다. - 객체지향프로그래밍(Object-Oriented Programming)이란? 나무위키에는 아래와 같이 설명하고 있습니다. 프로그램 설계방법론이자 개념의 .. 2020. 7. 28.