세상에 이상을 더하다.

지금, Rooti와 함께라면.

Rooti는 상상을 만드는 공방입니다.

Lecture/Java 10

싱글톤 패턴 : Singleton pattern

싱글톤이 왜 필요한가? 평소에 우리가 클래스를 만드는 이유가 무엇인지 곰곰이 생각해 보자. 클래스는 설계도와 똑같이 생긴 여러 복제품을 찍는것에 그 의의가 있었고 우린 그렇게 사용해 왔다. 그런데 만약 우리가 단 하나의 객체가 필요하거나 여러 객체 중 외부 클래스에서 접근해야 하는 객체가 존재한다면 어떡해야 할까? 그럴 때 사용하는 것이 바로 싱글톤 패턴이다. 싱글톤 패턴 : Singleton pattern 기본적인 싱글톤 패턴은 아래의 코드와 같다. 이 코드와 아래의 코드에서 생성자를 private, public으로 선언한것이 다르다, 주의 바란다! 일단 우리는 딱 하나의 인스턴스만 만든다고 해보자. 버 X킹의 회사를 예로 들겠다. 우리가 버X킹을 위한 프로그램을 만들고 있는데, 버X킹 본사는 전 세계..

Lecture/Java 2023.01.27

멈춰있는 것들: Static Variable, Static Method

메모리 구조와 함께 Static 변수와 메서드를 공부해 보자 메모리 구조 위 사진에서 알 수 있듯이 자바의 메모리 구조는 크게 데이터 영역, 힙 영역, 스택 영역 으로 나눌 수 있다. 앞 글에서 배운 개념들을 메모리의 관점에서 설명해 보자. 여러 참조 변수들과 지역 변수들, 매개변수들 등과 같은 변수들이 모두 실행될 때 스택 영역에 생성된다. 그리고 각 클래스들로부터 만들어진 인스턴스들은 힙 영역에 자리 잡히고 인스턴스 변수들도 마찬가지이다. 쉽게 생각하면 참조변수들은 힙 영역에 존재하는 인스턴스가 가지고 있는 "주소"를 가지고 있다고 생각하면 된다. 마지막으로 데이터 영역인데 프로그램이 실행될때 딱 한 번만 선언되는 static변수들이 여기에 존재한다. 이 글에서 알아볼것이 바로 static 변수이다...

Lecture/Java 2023.01.25

이거 예약어 : this reserved word

예약어(Reserved word) 컴퓨터 프로그래밍 언어에서 이미 문법적인 용도로 사용되고 있기 때문에 식별자로 사용할 수 없는 단어들이다. 예를 들어 C에서 return은 변수명이나 함수명으로 사용할 수 없다. 그런 단어들은 키워드이다. (위키피디아) 말 그대로,, 이미 특정한 의미로 사용되기 예약됨, 변수 이름이나 메서드로 사용하면 안 됨! 자신의 메모리를 가리키는 this 저번 글에서 잠시 언급한 예시를 다시 한번 보자. ( 수정사항 --> String[ ] coupons = new String[2]; ) 생성자도 결국 메서드 중 하나이니 생성자로 설명을 하겠다. 메서드에서 입력하는 값( 이 예시에서는 int memberID, String memberShip )의 이름과 각 인스턴스가 가지고 있는 ..

Lecture/Java 2023.01.25

은밀하게.. 정보 은닉과 접근 제어자

왜 필요한가? 학생의 신분으로 뭘 알겠나? 솔직히 필자도 정보 은닉의 중요성을 하나도 알지 못한다. 그러나 너무나 당연한 건 게임, 애플리케이션등과 같은 프로그램들 그리고 여러 사이트들은 보안이 중요하다는 것이다. 메모리에 올라가 있는 여러 변수들이 외부에서 너무나도 쉽게 읽히고 바뀐다면 많은 문제가 생기는 게 당연하다. 물론 어떻게 다른 변수에 접근하는지 그 방법은 나도 아직 잘 모르지만, 안전하게 보안을 철저히 해 두는것이 좋지 않은가... 접근 제어자 자바에는 크게 세 개의 접근제어자로 나눌 수 있고 아무런 제어자를 안 적을 수도 있다. 접근 제어자 설명 public 외부 클래스 어디에서나 접근 가능 protected 같은 패키지 내부와 상속 관계의 클래스에서만 접근 가능, 그 외 클래스에서는 접근..

Lecture/Java 2023.01.25

생성자( Constructor ), 변수 유효 범위

전에 배운 선언과 동시에 인스턴스화를 할 때 어떻게 하였는가? 생성자의 개념 그런데 뒤에 (클래스명) ( ); 이게 무엇일까? 메서드 같기도 하고.. 그런데 클래스명과 같은 이름을 가지는 메서드인가?? 이것이 지금 배울 '생성자'라는 것이다. 생성자란 클래스를 생성할 때 사용하는 Person(), Burger()과 같은 메서드를 의미하고 이들이 하는 일은 클래스를 처음 만들 때 멤버 변수를 초기화하는 것이다. 변수 유효 범위 이번 기회에 변수 유효 범위에 대해서도 알아보면 되겠다 ^^ 디폴트 생성자( Default Constructor ) Person(), Burger() 와 같이 괄호 안에 아무것도 넣지 않은 생성자를 디폴트 생성자라고 한다. 정확히 말하면 각 클래스에 생성자에 관한 내용을 아무것도 적..

Lecture/Java 2023.01.23

도트 연산자 (dot operator)

도트 연산자 우선 우리가 저번에 만든 인스턴스들에 값을 집어넣는 방법을 코드로 보자. (Class 이름) (참조변수 이름) = new (Class 이름) (); 을 통해서 선언 밑 초기화를 하고 각 클래스들이 들고 있는 멤버 변수(인스턴스 변수)에 어떤 값을 집어넣기 위해 (클래스명) ' . ' (변수명)을 하는 것을 볼 수 있다. (멤버변수라는 용어는 변수 유효 범위 파트에서 설명할 것이다.) 이때 ' . ' 가 도트 연산자이며 간단하게 그 인스턴스의 변수 혹은 메서드에 접근하기 위함이라고 이해하면 된다. 각 인스턴스들이 가지고 있는 멤버변수 임이 중요하다.

Lecture/Java 2023.01.23

내 Class 사용 설명서 :인스턴스화, 참조변수

이제 앞에서 설명한 클래스를 어떻게 사용할 것인지에 대해 알아보자. 참조변수( Reference Variable ) 클래스 하나가 다음과 같이 존재한다고 하자. ( 수정사항 --> String[ ] coupons = new String[2]; ) 이렇게 설계도를 만들었으니 이들을 사용해 보자. 이때 참조변수와 인스턴스화가 필요하다. 위 코드에서 A,B,whopper_Set, janmang_Loopy 가 각각 '참조변수'이다. 설계도가 만들어져 있으니 설계도를 그대로 사용하는 여러 인스턴스들을 만든 것이다. 여기서 인스턴스라는 단어가 나오는데... 인스턴스는 한국어로 '객체'이다. 하지만 나는 '인스턴스' 와 '객체'를 다른 의미로 사용할 것이다. ( 참고한 책에서 그렇게 배웠습니다. "교과서 위주로 공부..

Lecture/Java 2023.01.19

객체지향의 꽃 Class

Class의 개념 하나의 설계도를 만든다고 생각하면 된다. 객체지향과 절차지향의 설명을 할 때 곁들였던 버X킹 주문 프로그램을 통해서 Class, 객체의 개념을 알아보자! 버X킹에서 A 씨가 불고기 와퍼 세트를 주문한다고 하면, A 씨에 대한 정보와 불고기 와퍼 세트에 대한 정보가 필요할 것이다. A씨를 한번 분석해 볼까?? A씨 : 멤버십 등급 : WHOPPER / 쿠폰 소유 : 아.아 무료쿠폰 / ID : 12345678 불고기 와퍼 세트에 대한 정보를 분석해 보자 불고기 와퍼 세트 : 이름 : 불고기 와퍼 세트 / 가격 : 8900 / 할인율 : 30% 이제 이들을 다시한번 생각해 볼까? 이 세상에는 A 씨 말고도 B, C, D 씨도 있다. 그런데 이들도 멤버십 등급, 쿠폰 소유, ID 등을 공통으..

Lecture/Java 2023.01.19

(Procedural || Object-Oriented) Programming

절차지향 (Procedural Programming) 대표적 언어 : C 특징 : 그 이름 그대로 "절차"가 중요함. MBTI의 J의 성향 100%, 코드의 순서를 매우 중요하게 여김 장점 : 컴퓨터의 정보 처리과정과 유사하여 그 속도가 빠름 단점 : 일단 객체지향보다 뭐가 좋은지 잘 모르겠음 ( 지극히 개인적인 주관입니다. ) , 유지보수가 어려움, 순서를 너무 중요시하다 보니 play it by ear를 못함; 언어의 융통성이 없음 객체지향 ( Object-Oriented Programming ) 대표적 언어 : C#, Java 등등 특징 : 그 이름 그대로 "객체"가 중요함. 근데 이 객체라는 게 상당히 편한 것이, 예를 들어서 버X킹에서 음식을 주문받는 프로그램을 만들고 싶다고 하자. 그러면 그 ..

Lecture/Java 2023.01.19

자바를 잡아볼까나?

Introduction 음음, 제가 Java를 공부하며 C#과 비슷한 것을 정말 많이 봤어요! 그래서 게임개발을 하며 얻을 수 있는 여러 문법적 어려움들을 자바의 문법과 비교해 가며 공부하는 거, 나쁘지 않다고 여겨 카테고리를 만들어 봅니다. 틀린 말, 이상한 말을 할 수도 있어요! 틀린 내용이 있다면 많은 비판과 댓글 부탁드립니다! 주의할 점 자바 문법의 전체를 다루지는 않을 것입니다. ( 자료형, 반복문, 조건문 등 너무나 당연한 것들 ) C#과 Java를 비교, 대조하며 게임을 개발하며 중요하다고 느꼈던 문법들을 정리할 예정입니다. 즉, 객체지향에 대한 내용을 주로 하지 않을까..! 합니다. 참고한 책은 , 입니다. 지금부터 혼자 공부하며 정리하는 안..

Lecture/Java 2023.01.19