package pm;

public class Exam7 {

	public static void main(String[] args) {
		/* 클래스와 객체
		 * 클래스와 객체의 개념을 익히는 것은 세부 문법을 익히는 것만큼 중요
		 * 자바는 객체지향 언어로 클래스, 추상클래스, 인터페이스와 같은 객체 지향적 문법요소를 사용하여
		 * 프로그램을 구성하게 됨
		 * 자바를 제대로 사용하려면 이러한 문법 요소를 먼저 이해하는 것이 아주 중요함
		 * 
		 * 클래스의 개념?
		 * 객체는 object 사용할 수 있는 실체를 의미하고 클래스는 그 객체를 만드는 설계도
		 * 따라서 한 개의 클래스 여러 개의 객체 생성이 가능함
		 * 변수 > 배열 > 구조체 > 클래스
		 * 변수 : 다양한 형태의 데이터를 저장하기 위해 각각의 데이터를 저장하는 변수
		 * 배열 : 변수들이 많아지면 관리가 힘들고 배열을 사용하면 같은 자료형인 변수들을 묶어서 한 개의 새로운 자료형으로 관리 가능
		 * 구조체 : 배열은 같은 자료형만 묶을 수 있으므로 여러 형태의 데이터를 한 개의 배열로는 관리 불가
		 * 		 배열의 단점을 보완하기 위해 사용되는 자료형
		 * 클래스 : 구조체는 데이터만 관리할 수 있으며 여기에 어떤 기능들(메서드)을 추가한 것이 바로 클래스임
		 * 
		 * 절차지향(Procedural Programming) 과 객체지향 (Object Oriented Programming)
		 * 객체 지향 개념 전에는 대부분의 프로그램을 절차지향형으로 구현했음
		 * 절차 지향은 순수대로 단계적으로 실행되도록 명령어를 나열하는 방식
		 * 클래스의 등장 후에는 객체지향형 프로그래밍 방식이 주로 사용됨
		 * 
		 * 자바에서의 객체지향 요소
		 * 자바는 프로그램을 객체단위로 구성해서 상호 연동시킴
		 * 자바에서의 객체지향 문법 요소는 크게 클래스, 인터페이스가 있고 클래스는 다시 일반클래스와 추상클래스로 나눌 수 있음
		 * 크게 보면 2개 (클래스와 인터페이스), 작게 보면 3개 (일반 클래스, 추상 클래스, 인터페이스)의 객체 지향 문법 요소를 사용함
		 * 
		 * 클래스 작성의 기본 규칙
		 * 클래스명과 파일명은 반드시 일치해야만 함
		 * 클래스의 밖에 올 수 있는 것은 Package, Import, 클래스 선언
		 * 
		 * 접근 지정자 public은 한 개의 .java파일 안에서 최대 1개의 클래스에만 붙일 수 있음
		 * 
		 * 객체(Object) 와 인스턴스(Instance)
		 * 객체라는 표현과 인스턴스라는 표현은 같은 대상을 가리킴
		 * 클래스와의 관계를 표현할 때는 인스턴스라고 함
		 * 단독으로 그 자체만 표현할 때는 객체라고 함
		 * Ex) 인스턴스는 붕어빵 기계로 찍어낸 붕어빵, 객체는 그냥 붕어빵
		 * A a = new A ();
		 * 클래스명  객체명  = new 클래스명 (인수);
		 */
		

	}

}
