'클래스가 붕어빵 틀이 아니라고?'
담담하게 '메서드 붕어빵'이라고 검색했다가 입이 떡 벌어졌다. 두 손은 마른세수하느라 바빴고 한숨이 절로 튀어나왔다. 심호흡 후 더 찾아보니, 아무래도 객체나 클래스가 너무 추상적인 개념이라 종종 붕어빵에 비유한단다. '어제까지만 해도 객체는 붕어빵, 클래스는 붕어빵 틀이라고 외웠는데 어떡한담?'부터 '생각 회로를 전부 뜯어고쳐야 하나?'까지 온갖 생각이 머릿속에서 펑펑 터졌다. 폭죽처럼.
'아니, 왜 초반부터 이런 시련을 주시나요…….'
문제는 '그럼 둘의 관계를 오늘 다시 정리하느냐 마느냐'였다.
시도할 수 있는 대안은 총 두 가지로 첫째, 시간이 걸리더라도 글과 영상을 읽으며 관계를 재정립하거나 둘째, 일단 이대로 진도를 나가면서 추후 자연스레 회로가 편집되길 기다리기였다.
고민 끝에 나는 여기서 머뭇대기보다는 우선 더 걸어보기로 했다.
'클래스가 여러 객체 사이의 공통된 속성들을 정의한 분류나 집합'이라는 말은 알겠는데 이해 가진 않았기 때문이다. 여기서 끙끙 앓는다고 크게 나아지는 일도 없었고. 이 해결책이 부디 올바른 선택이길 바라며 다음 내용으로 넘어갔다. 그 덕분인지 진도를 꽤 나갔으니 어쨌든, 고생했다. 오늘도.
[습관 관련]
여덟 시 되기 전 기상에 성공했다. 자바 공부에 막 돌입해서인지, 의문이 들 때마다 검색하고 관련 글과 영상을 보다 보니 시간이 표현 그대로 쏜살같이 흘러갔다. 어느 정도 파고드는 집요함은 필요할지라도 계속 한 가지 궁금증이 꼬리에 꼬리를 물면 정체될 수밖에 없다. 사전캠프의 3주 차인 이번 주가 더욱 소중하게 느껴진다. 빨리 진도를 빼서 문제 한 번 제대로 풀어보고 싶다.
[인용 및 참고 출처]
1. 구글 검색: velog, "메서드 붕어빵", 객체는 왜 붕어빵이 아닐까, (2024.10.21)
2. 구글 검색: velog, "자바에서 인터페이스란?", 자바에서 인터페이스란, (2024.10.21)
3. 구글 검색: 혼공학습단, "자바에서 접근이란?", 자바 접근 제한자의 종류와 차이, (2024.10.21)
4. 강의: 클래스101 온라인클래스, "[100제 풀이] 예제로 마스터하는 Java(자바) 종합 클래스", 강의 소개, (2024.10.21)
5. 구글 검색: 구름EDU, "접근제한자를 쓰는 이유", 접근제어자를 사용하는 이유, (2024.10.21)
6. 사전: "void", 네이버 영어사전, 네이버 영어사전, (2024.10.21)
[학습 관련]
1. 들어가기 전 용어 정리
ⓐ 자바의 인터페이스(Interface)는 일종의 추상 클래스로 다른 클래스를 작성할 때 기본이 되는 틀을 제공하며, 다른 클래스 사이에서 중계를 담당한다.
ⓑ 메서드(Method)는 함수의 일종으로 어떤 특정한 동작이나 작업, 행위 등을 수행하는 것이다.
ⓒ 클래스(Class)는 객체를 생성하는 틀이다. 프레임(frame)이나 공장 및 템플릿과도 같다.
ⓓ 객체(Object)는 클래스라는 청사진을 바탕으로 만들어진 실체, 즉 고유한 상태와 행동을 가지는 독립적인 실체이다.
ⓔ 자바에서 접근(Access)은 클래스 및 인터페이스, 그리고 이들이 가지고 있는 멤버의 접근을 의미한다.
2. 자바(Java) 기본 뼈대
public class VariablePrac2 {
public static void main(String[] args) {
// 중괄호 안에 구현할 코드를 작성한다.
// 2-1) public: 접근제한자
// 2-2) VariablePrac2: 클래스 이름
// 2-3) void: 반환타입
// 2-4) main: 메서드 이름
// 2-5) String[] args: 파라미터스
}
}
2-1) 접근제한자(Access Modifier)
ⓐ 클래스나 메서드에 접근할 수 있는 범위를 지정하는 키워드. '접근제어자'라고도 함
ⓑ 사용 목적: 개발자가 의도하지 않은 오작동 방지 및 객체가 가진 정보 보호
ⓒ 사용 배경: 프로젝트 규모가 커질수록 복잡성 또한 늘어나며 객체를 사용하는 사용자가 객체 내부의 변수나 메서드에 접근했다가 개발자의 예상 밖 오작동을 일으킬 수 있음
ⓓ 종류: 접근 허용 범위 순으로 public > protected > default > private ▶ 비유: public은 공원의 공중화장실, private는 직원 전용 화장실
2-2) 클래스 명명 규칙
public class VariablePrac2 {
public static void main(String[] args) {
// 규칙 [1]: 단어의 맨 앞 글자는 대문자로 표기한다.
// 규칙 [2]: 단어 연결 시 각 단어의 첫 글자를 대문자로 표기한다.
// VariablePrac2가 클래스 이름이다.
}
}
2-3) 반환타입(Return Type)
public class VariablePrac2 {
public static void main(String[] args) {
// 반환타입은 함수를 통해 반환할 값이 있니, 없니?'를 나타낸다.
// 반환할 값이 없으면 void를 쓰면 된다.
// 참고: 단어 void는 '텅 빈, 빈 공간, 공허감'을 의미한다.
System.out.println("Hello World~");
// 의미 [1]: 이 메인 메서드는 호출해도 결과로써 반환되는 값이 없다.
// 의미 [2]: 또한 Hello World~를 출력하는 행위만 한다.
}
}
2-4) 메인 메서드(Java's main() method)
public class VariablePrac2 {
public static void main(String[] args) {
// 메인 메서드는 시작점(Entry point)을 알려준다.
// 길게 작성된 소스 코드에서 프로그램의 시작이 어딘지 모르면 안 되니까!
// 자바는 실행되면 가장 먼저 메인 메서드를 찾는다.
// 주의 사항 [1]: 반드시 main으로 입력해야 한다.
// 주의 사항 [2]: main_method 안 된다.
// 주의 사항 [3]: main3 또한 안 된다.
}
}
2-5) 파라미터스(Parameters)
public class VariablePrac2 {
public static void main(String[] args) {
// 하나 또는 둘 이상의 파라미터 값을 넣어서 메서드를 호출할 수 있다.
// 파라미터스에는 그러한 파라미터들의 값을 저장할 변수들을 명시한다.
// [1] String: 문자열. S는 반드시 대문자로 표기해야 한다.
// [2] 대괄호[]: 배열, 즉 값을 여러 개 담을 수 있는 바구니이다.
// [3] args: 하나의 변수명
// [3-1] argument의 약자로 '인수, 독립 변수'를 의미한다.
// [3-2] 값을 여러 개 받을 수 있기 때문에 복수형인 args로 입력한다.
// [3-3] args를 주로 사용하나 asdf처럼 임의로 명명해도 상관없다.
}
}
3. 변수에 값 저장하기
public class VariablePrac2 {
public static void main(String[] args) {
// 기호 '='는 대입 연산자로 '오른쪽 값을 왼쪽에 저장하라'는 의미이다.
int age;
// [1] 정수형(int)타입의 변수 age 선언
age = 25;
// [2] 변수 age에 25라는 값 저장
System.out.println(age);
// [3] 변수 사용. 25가 출력된다.
int num = 30;
// [추가 사항] 변수 선언과 값 저장은 동시에 할 수 있다.
System.out.println(num);
// 정수형(int)타입의 변수 num 선언과 동시에 저장된 값 출력
// 30이 출력된다.
}
}
4. 실습 결과
main 대신 main2로 입력했더니 기본 메소드를 찾을 수 없다는 오류가 발생했다. 자바는 첫인상과 다르게 꽤 친절했다. 인텔리제이(IntelliJ) 프로젝트 실행 단축키가 Windows 기준 '[Shfit] + [F10]'이라는 사실 또한 배웠다.
[기타 사항]
내일은 static 키워드가 뭔지 간단히 배우고 변수 및 변수 선언 내용 속 부족한 부분을 채울 차례이다. 이번에 들어간 조는 저번과는 또 다른 분위기라 마치 밖에서 신선한 공기를 들이마신 듯 머릿속을 환기할 수 있었다. 공부할 내용이 쉽지 않다 보니, 새로운 조에서 인사 나눌 때 느낀 어색하고 낯선 기분이 설렘으로 다가왔다. 이번 주 시작이 참 보람차고 좋다.
'끝을 보는 용기' 카테고리의 다른 글
Spring 사전캠프 Day 017 - 자바(Java) 공부: 변수 (4/6) (0) | 2024.10.23 |
---|---|
Spring 사전캠프 Day 016 - 자바(Java) 공부: 변수 (3/6) (0) | 2024.10.22 |
Spring 사전캠프 Day 014 - 자바(Java) 공부: 변수 (1/6) (0) | 2024.10.20 |
Spring 사전캠프 Day 013 - 책 『비전공이지만 개발자로 먹고삽니다』 읽기 20% (0) | 2024.10.19 |
Spring 사전캠프 Day 012 - 책 『오늘부터 IT를 시작합니다』 읽기 100%, 자바(Java) 공부 시작 (0) | 2024.10.18 |