안녕하세요.
|
개발자 이서연입니다.

thumbnail
[크래프톤 정글 에세이] 1주차 - 설득력 있는 서비스란 무엇일까

그렇게 되었습니다 현재 나는, 경기대학교 캠퍼스에서 크래프톤 정글의 정글러로서 삶을 살고 있다. 집을 벗어나 오래 생활하게 된 것도 처음이고 낯선 사람들과 팀 프로젝트를 하고… 인생은 정말 한치 앞을 모르는구나. 하루하루 정신없고 밥먹고 코딩하고 공부하고 밥먹고 코딩하고… 의 연속이다. 그렇게 자고 일어나면 똑같은 하루가 시작된다. 토요일도 예외는 없다. 오전 10시-오후11시의 무시무시한 일과는 계속된다. 10줄을 입력한 후의 나, ‘이정도면 오늘 할 일 다했다!’ 라고 하고 싶지만… 입소하고 난지 5일 째인 오늘, 벌써 깃허브엔 70커밋이 넘었고, 내 앞에 주어진 수많은 코테 문제들이 나를 기다리고 있다… (살려주세요) 사실 평소에는 한 주에 한 번, 몇 문제 풀기/뭐뭐 정리해오기 등을 정해놓으면, 사실 막상 하는데 오래 걸리지 않는데도 잘 하지 않았고 점점 집중하지 못했던 나날들이 많았다. 그치만 적어도 여기에선, 열심히 하는 옆의 동료들과 집중할 수밖에 없는 환경 속에서 정…

[Java 기초] 자바에서 패키지란

1. final 변수 끝! 이라는 뜻으로, 변수에 이 붙으면 더는 값을 변경할 수 없다. 참고: 은 class, method를 포함한 여러 곳에 붙을 수 있다. 지역변수로 사용하기 지역변수에 을 설정한 경우, 최초 한번만 할당할 수 있고 이후 값을 변경하려면 컴파일 오류가 생긴다 매개변수에 이 붙으면 메서드 내부에서 값을 변경할 수 없다. 멤버변수로 사용하기 을 필드에 사용할 경우 생성자를 통해 한번만 초기화 될 수 있다. (생성자 초기화) 이미 필드에서 초기화를 해 버리면, 생성자를 통해서도 초기화할 수 없다. (필드 초기화) 도 선언할 수 있다. (관례에 따라 대문자 작명) 과 같이 생성자를 사용해서 필드를 초기화하면, 각 인스턴스마다 필드에 다른 값을 할당할 수 있다. 과 같이 필드 초기화를 하는 경우, 모든 인스턴스가 오른쪽 그림과 같이 같은 값을 가짐에도 인스턴스마다 메모리를 차지하고 있기 때문에, 결과적으로 메모리를 낭비하게 된다. 이때 사용하면 좋은 …

[Java 기초] 접근제어자 종류와 캡슐화

1. 접근제어자가 필요한 이유 접근 제어자를 사용하면 해당 클래스 외부에서 특정 필드나 메서드에 접근하는 것을 허용하거나 제한할 수 있다. 접근제어자가 왜 필요한가? 스피커에 들어가는 소프트웨어 프로그램을 작성하며 알아보자. 이 스피커의 음량은 절대로 100을 넘으면 안된다. 스피커 객체 클래스 생성자를 통해 초기 음량 값을 지정할 수 있고, 메서드를 통해 10씩 음량을 증가시킬 수 있다. 음량이 100을 넘게 되면 음량이 더이상 증가하지 않는다. SpeakerMain 초기 음량 값을 90으로 지정했고, 기대한 대로 음량은 100 이상 넘지 않았다. 그리고 오랜 시간이 지난 후, 기존의 요구사항을 모르는 새로운 개발자가 소리를 더 올리면 좋겠다고 생각하여 클래스의 필드를 직접 사용하여 값을 200으로 설정하고 코드를 실행한 순간, 스피커 부품들에 과부하가 걸리면서 폭발했다. 현재 코드로는, 객체를 사용하는 사용자가 필드와 메서드에 모두 접근할 수 있다. 그래서 메서드로…

[Java 기초] 자바에서 패키지란

1. 패키지란? 쇼핑몰 시스템을 개발한다고 할 때, 기능이 계속 추가되어 프로그램이 아주 커진다면 기능을 분류하여 관리할 필요성이 생긴다. 컴퓨터에서 파일을 분류하기 위해 디렉토리라는 개념을 제공하는 것처럼, 자바에서는 패키지라는 개념이 있다. 쇼핑몰 시스템의 카테고리를 만들고 분류하면 다음과 같다. 여기에서 user, product, order 등으로 패키지로 나눌 수 있음을 알 수 있다. 그리고 해당 패키지 안에 관련 자바 클래스를 넣으면 된다. 2. 패키지 사용해보기 패키지를 사용하는 경우 코드 첫 줄에 처럼 패키지 이름을 적어주면 된다. 다른 패키지에 있는 클래스를 사용하려면, 와 같이 패키지 전체 경로를 포함하여 클래스를 적어주어야 한다. import를 사용하면 패키지 전체 경로를 쓰지 않고도 적어줄 수 있다. (아래 설명) 참고: 생성자에 을 사용했는데, 다른 패키지에서 이 클래스의 생성자를 호출하려면 사용이 필요하다. 3. 패키지 import import문을 사…

[Java 기초] 생성자와 this 사용

1. 생성자가 필요한 이유 객체를 생성하는 시점에서 생성자(Constructor)를 사용하면 된다. 코드로 생성자가 왜 필요한지 알아보자. 위의 코드에서는, 속성과 기능을 한 곳에 두는 것이 더 나은 방법이다. 쉽게 말해 이 자기자신이 데이터를 변경하는 기능을 제공하는 것이 좋다. 2. this 위의 작성한 메서드를 보면, 멤버변수의 이름과 매개변수의 이름이 똑같다. 이 둘을 어떻게 구분해야 할까? 이 경우 멤버 변수보다 매개변수가 코드 블럭의 더 안쪽에 있기 때문에 매개변수가 우선순위를 가진다. 멤버 변수에 접근하려면 앞에 라고 해주면 된다. 이때 는 인스턴스 자신의 참조값. this를 생략하고 싶다면? 매개변수와 멤버변수가 이름이 다르면 를 생략할 수 있다. 변수를 찾을 때는 지역변수(매개변수 포함)를 먼저 찾고, 그다음으로 멤버 변수를 찾는다. 아래와 같이 호출해 사용하면 된다. this와 코딩 스타일 멤버 변수에 접근할 때 항상 this를 사용하는 코딩 스타일도 있다.…

[Java 기초] 절차지향 프로그래밍과 객체지향 프로그래밍

1. 절차지향 vs 절차지향 절차지향 실행 순서를 중요하게 생각하는 방식 프로그램의 흐름을 순차적으로 따르며 처리하는 방식, 즉 ‘어떻게’를 중심으로 프로그래밍함 객체지향 객체를 중요하게 생각하는 방식 실제 세계의 사물이나 사건을 객체로 보고, 이러한 객체들 간의 상호작용을 중심으로 프로그래밍하는 방식 중요한 차이점 절차지향은 데이터와 해당 데이터에 대한 처리 방식이 분리되어 있다. 객체지향에서는 데이터와 그 데이터에 대한 행동(메서드)이 하나의 객체 안에 함께 포함되어 있다 2. 절차지향으로 음악 플레이어 만들기 데이터를 묶어보기 음악 플레이어와 관련된 데이터를 라는 클래스로 묶는다. 음악 플레이어와 관련된 변수들은 해당 클래스 객체에 속해있으므로 쉽게 구분할 수 있다. 메서드 추출하기 중복되는 부분, 재사용될 가능성이 있는 부분이 있다 음악 플레이어 켜기, 끄기 볼륨 증가, 감소 음악 플레이어 상태 출력 각각의 기능을 메서드로 만든 덕분에 각각의 기능이 모듈화되었다. 덕분에 다…

[Java 기초] 기본형과 참조형 타입의 차이

1. 기본형 vs 참조형 변수의 데이터 타입을 크게 보면 기본형과 참조형으로 구분 할 수 있다. 기본형(Primitive Type): 변수에 사용할 값을 직접 넣을 수 있는 데이터타입 ex. , , , 참조형(Reference Type): 데이터에 접근하기 위한 참조(주소)를 저장하는 데이터 타입 (객체 또는 배열에 사용된다.) ex. 기본형 vs 참조형 기본형 변수 직접 사용할 수 있는 값이 들어있다, 해당 값을 바로 사용 가능. (ex. , ) 연산이 가능하다 Java가 기본으로 제공하는 데이터 타입이다. (개발자가 직접 정의할 수 없음) 참조형 변수 위치(참조값)이 들어가 있다. 참조형 변수를 통해서 뭔가를 하려면 참조값을 통해 해당 위치로 이동해야 한다. 객체는 (dot)을 통해 메모리 상에 생성된 객체를 찾아가야 사용 가능 배열은 를 통해 메모리 상에 생성된 배열을 찾아가야 사용 가능 들어있는 참조값만으로는 연산을 할 수 없다. 물론 을 통해 멤버변수에 접근 가…

[Java 기초] 클래스, 객체, 인스턴스란? + 클래스를 사용하는 이유

1. 클래스가 필요한 이유 학생 정보를 출력하는 코드를 보며 이해해보자. 학생 2명을 출력하기 위해 각각 다른 변수를 사용했다. → 문제: 학생이 늘어날 때마다 변수와 출력하는 코드를 추가 선언해야 한다. 배열을 사용하여 정보를 담자 배열에 값을 추가하기만 하면, 학생 정보를 늘릴 수 있고 불필요한 코드를 줄일 수 있게 되었다. 배열 사용의 한계 배열을 사용하여 변경을 최소화했지만, 한 학생의 데이터가 여러 배열에 나누어져 있어, 데이터를 변경할 때 매우 조심해서 작업해야 한다. 즉, 한 학생의 데이터를 바꾸기 위해 3개의 배열을 모두 변경해야 한다는 것이다. 컴퓨터가 처리할 때는 아무 문제가 없겠지만, 사람이 관리하기에 좋은 방식은 아니다. 사람이 관리하기 좋기 위해서는, ‘학생’이라는 개념을 하나로 묶는 것이다. = 클래스 2. 클래스 사용해보기 이렇게 정의한 클래스는 name, age, grade라는 멤버 변수(혹은 필드)를 가진다. 이제 위의 클래스를 사용해보자. 클래스와 …

블로그 옮기고 있습니다.

이전 블로그에서 천천히 옮겨올 예정입니다!