오늘 공부한 내용 ✍️
java
객체 지향 프로그래밍
-
객체 (object)
- 의사나 행위가 미치는 대상 (사전적 의미)
- 구체적, 추상적 데이터의 단위 (학생,회원,생산,주문,배송)
-
객체 지향 프로그램, 절차 지향 프로그래밍
- 아침에 학교가는 과정 예로 들었을 때
- 절차 지향 프로그래밍
- 시간이나 사건의 흐름에 따른 프로그래밍
- 일어난다 -> 씻는다 -> 밥먹는다 -> 버스탄다
- 객체 지향 프로그래밍
-
객체 지향 프로그램을 구현하는 법
- 객체를 정의하고
- 각 객체에 제공하는 기능들을 구현하고
- 각 객체가 제공하는 기능들 간의 소통(메세지 전달)을 통하여 객체간의 협력을 구현
- 프로그램 설계 때 이런 것들을 미리 정함 (엔티티, 오브젝트, 도메인 등으로 불림)
-
클래스는 객체의 청사진
-
객체 지향 프로그램을 할 때
- 객체 정의
- 각 객체의 속성을 멤버 변수로 역할을 메서드로 구현
- 각 객체간의 협력을 구현
-
클래스 코딩하기
- 클래스는 대문자로 시작하는게 좋다
- public = 공용
- java 파일 하나에 클래스는 여러 개가 있을 수 있지만, public 클래스는 하나
- public 클래스와 .java 파일의 이름은 동일해야함
- camel notation 방식으로 명명
함수(function)와 메서드(method)
인스턴스 생성과 힙 메모리
- 인스턴스 (instance)
- 클래스: 객체의 속성을 정의 하고, 기능을 구현하여 만들어 놓은 코드 상태
- 실제 클래스 기반으로 생성된 객체(인스턴스)는 각각 다른 멤버 변수 값을 가지게 됨
- 가령, 학생의 클래스에서 생성된 각각의 인스턴스는 각각 다른 이름, 학번, 학년등의 값을 가지게 됨
- new 키워드를 사용하여 인스턴스 생성
- 힙 메모리
- 생성된 인스턴스는 동적 메모리(heap memory) 에 할당됨
- C나 C++ 언어에서는 사용한 동적 메모리를 프로그래머가 해제 시켜야 함 ( free() 난 delete 이용)
- 자바에선 Gabage Collector 가 주기적으로 사용하지 않는 메모리를 수거
- 하나의 클래스로 부터 여러개의 인스턴스가 생성되고 각각 다른 메모리 주소를 가지게 됨

용어 정리
- 객체 : 객체 지향 프로그램의 대상, 생성된 인스턴스
- 클래스 : 객체를 프로그래밍 하기위해 코드로 정의해 놓은 상태
- 인스턴스 : new 키워드를 사용하여 클래스를 메모리에 생성한 상태
- 멤버 변수 : 클래스의 속성, 특성
- 메서드 : 멤버 변수를 이용하여 클래스의 기능을 구현한 함수
- 참조 변수 : 메모리에 생성된 인스턴스를 가리키는 변수
- 참조 값 : 생성된 인스턴스의 메모리 주소 값
생성자 (constructor)
어려웠던 내용 😅
궁금한 내용 / 부족한 내용 🔍
- java 스타일대로 서버, 클라이언트에 어떻게 디자인할 지 궁금하다.
느낀점 🤔
- 그간 객체지향적 프로그래밍에 대한 갈증이 있었는데, 이 강의에선 객체지향 스타일로 가르쳐줘서 좋았다. 얼른 숙달됐으면.
자료 및 내용 출처: https://gitlab.com/easyspubjava/javacoursework/-/tree/master