개발 이야기

Computer-이론/OOP

생성자 (2020.11.12)

목차 생성자 객체를 인스턴스화 할 때, 초기 상태를 지정해 주기 위해서 생성자 개념을 사용한다. 각 언어마다 생성자를 지정하는 방법이 다양한데, VisualBasic 에서는 New 키워드로, Swift는 init 키워드로, Java와 C#같은 경우에는 클래스의 이름과 동일한 메서드로 생성자를 지정한다. 우리는 계속 사용해오던 Java를 사용하여 알아보록 하자. 상속 Slime 클래스의 생성자를 만들어보자. public class slime{ private int hp; private int ATK; private int DEF; public slime(){ // 반환값이 없다! this.hp = 500; this.ATK = 30; this.DEF = 10; } public void tackle() /* ..

Computer-이론/OOP

오버로딩, 오버라이딩 (2020.10.23)

목차 이름이 비슷비슷해서 공부할 때는 항상 헷갈렸던, 오버로딩과 오버라이딩을 설명해보겠다. 오버로딩(overloading) 오버로딩은 매개변수의 형식, 개수를 다르게 해서 메서드가 다양한 유형의 요청에 답할 수 있게 하는 것이다. 예를 들어서, 덧셈을 위한 메서드를 만들었다. public int sum(int A, int B); 이 메서드는 두 정수를 받아서 두 수의 합을 반환하게 되어있다. 그런데 사용자가 3개의 정수의 합을 구하고 싶다고 한다면 어떻게할까? 이런 경우, 아래와 같이 메서드를 새로 하나 더 만들면 된다. public int sum3(int A, int B, int C); 하지만, 사용자가 다시 실수의 합을 구하는 메서드를 요청한다면? 또 double형식의 함수를 하나 더 만들고, pub..

Computer-이론/OOP

상속 (2020.10.17)

목차 상속 상속은 어떤 한 클래스의 속성과 메서드를 다른 클래스에서도 쓸 수 있게 하는 것이다. 예를 들어, 어떤 게임의 몬스터를 전부 만들게 되었다고 해보자. 모든 몬스터 전부 public class slime{ private int hp; private int ATK; private int DEF; public void tackle() /* 등등 */ } public class wolf{ private int hp; private int ATK; private int DEF; public void bite() /* 등등 */ } 만들고 보니 hp, ATK, DEF 등 슬라임과 늑대는 서로 공통적으로 가지는 속성들이 많다. 다른 몬스터들을 생각해봐도, 이 속성들은 가지고 있어야 몬스터라 부를 수 있다...

Computer-이론/OOP

캡슐화 (2020.09.23)

목차 캡슐화 / Encapsulation 캡슐화는 데이터와 행위를 묶어 객체라는 형태로 만드는 것을 말한다. 앞서 말했던, 객체의 정의와 같다고 생각할 수 있다. 하지만, 캡슐화는 묶는 과정에서 속성(attribute), 메서드(method)를 외부로부터 감출 것인지, 공개할 것인지 설정할 수 있다는 것이 핵심이다. 바로 '데이터 은닉'기법이다. 데이터 은닉을 통해 감춰진 속성, 메서드는 외부에서는 접근할 수 없으며, 객체내부에서만 수정, 사용할 수 있다. 곡개하는 속성, 메서드는 'public' 접두어를, 비공개하는 속성 메서드는 'private' 접두어를 붙인다. 객체는 책임으로 이루어져있다. 우리는 어떤 객체에게 특정 행동을 기대하고, 객체를 만든다. 이때, 이 객체를 '1번객체'라고 하고, '2번..