클래스 이전에 구조체를 먼저 공부하는 이유는 클래스(class())가 C언어의 구조체에서 확장된 개념이기 때문입니다.
구조체란 배열과는 달리 인덱스가 아닌 "변수명"으로 특정 대상을 프로그래밍적으로 묘사하기 위해 사용합니다.
추상화는 대상을 간단하게 표현하는 것을 의미합니다.
이를테면 사람을 만약 컴퓨터적으로 표현한다면 원래대로라면 표현해야하는 요소가 너무 많습니다.(외양 뿐만 아니라 자세한 부분 포함한다면 특징 지을 것이 무한대이다.)
그러므로 프로그램적으로 모든 것을 다 묘사할 수 없고 비효율이기 때문에 필수적인 요소만 표현하게 되는데 이를 추상화라고 합니다.
고양이의 요소 : 털 색깔, 수염 모수, 몸무게, 품종, 이름, 나이, 선호 간식, 성별, 울음소리 ....기타등등
동물병원에 등록할 때 필요한 정보는 주인, 품종, 이름, 나이, 방문기록 정도 된다. : 추상화
개발시에는 개발자가 고려할 수 있는(혹은 기능이 요구하는) 최소한의 사항만을 정의합니다.
위에서 고양이와 강아지에 대한 정보를 기입했을 때 하나하나 print() 구문으로 이름과 나이, 품종 등을 조사해야 해서 불편합니다.(포메팅 구문을 쓰더라도 불편한 것은 마찬가지)
이럴때 함수를 선언해두면 편하게 조회할 수 있습니다.
출력
(1) 클래스 설정 (스택에 Dog 클래스 생성 / 힙에 자료 유형 저장)
(2) 1번 강아지 변수 설정(스택에 dog1 주소저장 / 힙에 dog1 인스턴스 생성 ) : dog1 = Dog()
(3) 강아지 정보 저장 (힙의 인스턴스에 정보들 저장)
dog1.name = "진돌이"
dog1.age = 1
dog1.dog_type = "진도"
dog1.owner_name = "김"
(4) 함수선언(스택에 함수 주소 생성 / 힙에 함수 인스턴스 생성) : show_dog_info(dog1)
(5) 함수출력(스택에 dog함수 주소 생성(!!다시 함수 코드로 올라가서 작업 시작!!) / Dog 인스턴스에서 정보 가져옴)
(6) 결과값 출력
(1) 클래스의 탄생
(2) 구조체와 클래스
(3) 파이썬 class