이 설명을 찬찬히 뜯어보면, 우리가 실제로 프로젝트를 맡게 되면 고객 정보나 결제 수단 등 필요한 정보가 있을 것이다. 그걸 데이터라고 하고, 비슷한 요소의 것들끼리 묶어 이름표를 붙혀주는 걸 추상화라 이해하면 수월할 것 같다. 우리 스터디원들을 모두 모아 추상화시키면 자바 스터디원이라고 추상화 될 수 있다. 객체 또한 일상에서 보던 말이 아니라 주춤할 수 있는데, 눈에 보이는 모든 것이 객체가 될 수 있다는 걸 기억하면 더 쉽게 다가갈 수 있다. 객체는 모두 상태와 행위를 가지고 그 객체들 사이를 끈끈하게 이어주며 서로 영향을 주고 받을 수 있도록 설계하는 것이 객체 지향 프로그래밍의 큰 틀이라 볼 수 있다. 객체를 레고 조각으로 비유하자면 레고 조각을 모두 모아 조립해 하나의 완성작을 만들듯이 객체를 모아 조립해 하나로 완성시킨다. 그러므로 객체 지향의 특징은객체 지향 프로그래밍 (Object-Oriented Programming, OOP)은 프로그래밍에서 필요한 데이터를 추상화 시켜
상태와 행위를 가진 객체
로 만들고, 객체들간의 상호작용을 통해 로직을 구성하는 프로그래밍 방법이다.
부품화
와 재사용성
이 있는데, 더 깊게 들어가는 내용을 쉽게 이해하려면 자바에 대한 더 깊은 이해가 있을 수록 좋으니 스터디를 진행하며 차근차근 같이 얘기 해 보면 좋겠다. 객체 지향 프로그래밍 참고 글: https://jongminfire.dev/객체지향-프로그래밍이란 다형성 참고 글: https://choi3950.tistory.com/25프로그래밍에서 데이터 처리를 위한 데이터 저장 형태의 발전 과정 중 하나로 발전과정은 다음과 같다.
변수 → 배열 → 구조체 → 클래스
변수: 하나의 데이터를 저장할 수 있는 공간
배열: 같은 종류의 여러 데이터를 하나의 집합으로 저장할 수 있는 공간
구조체: 서로 관련된 여러 데이터를 종류에 관계 없이 하나의 집합으로 저장할 수 있는 공간
클래스: 데이터와 함수의 결합 (구조체 + 함수)
이 코드에서 주석처리된 부분을 실행하면 컴파일 에러가 발생하게 되는데, 왜 발생하게 되는건지 이유를 설명해주세요.
public class Main {
public static void main(String[] args) {
int age = 25;
Person person = new Person(age);
//int test = person;
}
}
설명 (답변) 과 관련 질문
인스턴스는 참조변수를 통해서만 다룰 수 있고, 참조변수의 타입은 인스턴스의 타입과 일치해야 한다. 위 코드에서는 Person 클래스의 인스턴스를 생성하고, 해당 인스턴스를 참조하기 위해 person 참조변수를 사용한다. 하지만, age 변수는 기본형 변수이므로 객체의 주소를 저장할 수 없기 때문에 int test = person; 코드는 컴파일 오류가 발생한다.