170 likes | 412 Views
5 장 클래스. 클래스. class 객체지향의 특징 클래스 정의하기 클래스의 구성요소 패키지(package) java.util.Date 클래스. 클래스. 객체지향 프로그래밍 동작보다는 객체, 논리보다는 자료를 바탕으로 구성되며 객체라는 시각에서 접근하 하는 프로그래밍 기법을 말한다 . 객체(Object) 란 ? 넓은 의미에서는 사람에서부터 건물까지 그리고 컴퓨터 바탕화면의 아주 작은 요소인 버튼이나 스크롤바 같은 것들까지를 모두 객체라 한다 . 좁은 의미에서는 클래스의 인스턴스를 의미한다
E N D
클래스 • class • 객체지향의 특징 • 클래스 정의하기 • 클래스의 구성요소 • 패키지(package) • java.util.Date 클래스
클래스 • 객체지향 프로그래밍 • 동작보다는 객체, 논리보다는 자료를 바탕으로 구성되며 객체라는 시각에서 접근하하는 프로그래밍 기법을 말한다. • 객체(Object)란? • 넓은 의미에서는 사람에서부터 건물까지 그리고 컴퓨터 바탕화면의 아주 작은 요소인 버튼이나 스크롤바 같은 것들까지를 모두 객체라 한다. • 좁은 의미에서는 클래스의 인스턴스를 의미한다 • 클래스(Class)란? • 객체를 만들기 위한 틀 또는 설계도라고 할 수 있다. • 객체지향 프로그래밍은 추상화, 캡슐화, 상속성, 다형성의 특징을 가진다.
클래스 • 객체지향 프로그래밍의 특징 • 추상화 • 추상화는 몇 가지 공통 속성을 가지지만 서로 다른 속성도 가지는 객체를 집단화할 수 있게 한다. • 구체적인 객체(개, 고양이)를 추상적인 객체(동물)로 집단화 하는 과정을 추상화하라 하고 이 반대의 과정을 일반화라고 한다.
클래스 • 캡슐화 • 은닉화라고도 한다. • 클래스 내부의 동작을 모르더라도 클래스가 제공하는 메서드를 사용해 클래스의 기능을 사용할 수 있다는 개념이다. • 클래스로 객체를 생성하거나 상속을 해 사용할 때도 갭슐화가 적용된다. • 클래스의 메서드에 입력을 넣었을 때 어떤 결과를 반환하지는 혹은 어떤 동작을 하는지를 알고 사용하면 되는 것이다. • 상속성 • 상속성은 객체지향의 가장 중요한 개념이다. • 자신보다 상위 클래스(또는 부모 클래스)의 속성을 상속하여 새로운 클래스를 만들 수 있는 특징을 상속성이라고 한다. • 다형성 • 같은 이름의 메서드가 상황에 따라 다른 동작을 할 수 있도록 하는 특징 • 오버 라이딩과 오버 로딩을 사용해 구현한다.
클래스 • 클래스 정의하기 • 객체지향 프로그래밍의 절차 • 객체를 모델링해야 한다. • 객체가 가지는 속성과 동작(행동)을 먼저 파악해야 한다. • 속성은 명사로 표현될 수 있는 것들이고 동작은 동사로서 표현되는 것들이다. • 속성과 동작을 모델링하였다면 이것을 클래스로 표현 한다. • 클래스를 작성하는 형식 [접근 제어자] class 클래스 이름 { 멤버 변수; 생성자; 멤버 메서드; }
클래스 • 예제 • 실행결과 public class ClassTest { public static void main(String args[]) { System.out.println("new 연산자를 사용해 객체를 생성합니다"); ClassExam obj = new ClassExam(); } } class ClassExam { private String memberVar; public ClassExam() {} public void method() {} }
클래스 • 클래스의 구성요소 • 생성자 • new 연산자를 이용해 객체를 생성할 때 호출 된다. • 주로 멤버 변수를 초기화 하거나 상위 클래스에 어떤 인수를 넘겨주는 경우 사용한다. • 일반 메서드와 다른 형식을 가진다. -> 생성자의 접근 제어자는 특수한 경우를 제외하고 대부분 public으로 선언하며 반환되는 데이터형이 없다. public 클래스 이름(인자) { 실행문; }
클래스 • 예제 • 실행결과 public class ClassTest { public static void main(String args[]) { System.out.println("new 연산자를 사용해 객체를 생성합니다"); ClassExam obj = new ClassExam(); } } class ClassExam { private String memberVar; public ClassExam() { System.out.println("생성자는 객체가 생성될때 제일먼저 호출됩니다"); System.out.println("memberVar의 값을 \"멤버변수\"로 초기화 합니다."); memberVar = "멤버변수"; } public void method() {} }
클래스 • 멤버 변수 • 클래스의 속성을 정의하기 위해 선언 된 변수 • 메서드 내부가 아닌 클래스에 바로 선언한다. • 접근 제어자를 가질 수 있는다.(public, private, protected) • 사용 형식 : [접근 제어자] 데이터형 변수이름 • 멤버 메서드 • 클래스 내부의 멤버 변수가 무엇이고 어떻게 사용되는지 몰라도 멤버 메서드를 사용하여 원하는 동작이나 결과를 얻을 수 있다.(은닉화, 캡슐화) • 캡슐화는 프로그램은 멤버 변수의 잘못된 사용을 차단해 데이터의 신뢰성을 향상시킨다. • 사용 형식 [접근 제어자] 데이터형 메서드이름(인자) { 실행문; }
클래스 • 예제 public class ClassTest { public static void main(String args[]) { System.out.println("new 연산자를 사용해 객체를 생성합니다"); ClassExam obj = new ClassExam(); obj.method(); } } class ClassExam { private String memberVar; public ClassExam() { System.out.println("생성자는 객체가 생성될때 제일먼저 호출됩니다"); System.out.println("memberVar의 값을 \"멤버변수\"로 초기화 합니다."); memberVar = "멤버변수"; } public void method() { System.out.println("memberVar : " + memberVar); } }
클래스 • 실행결과
클래스 • 패키지 • 기본적으로 제공되는 패키지 외에 프로그래머가 필요에 의해 패키지를 만들어 사용할 수 있다. • 패키지를 만들기 위해서는 package 문을 자바 소스에 첫 문장으로 추가해야 한다. -> package 패키지이름; • 패키지를 만들 때 주의할 점 • 패키지의 선언은 소스의 처음에 선언되어야 한다. • 패키지는 한번만 선언되어야 한다. • 같은 패키지에 속한 클래스는 패키지 이름과 동일한 폴더에 위치해야 한다. 서브 폴더로 나뉘어 있는 경우에는 해당 폴더까지의 경로가 패키지 이름이 된다. • 자바의 패키지는 일반적으로 다음과 같은 규칙으로 명명한다. • URL을역순으로기재. 패키지이름.클래스 (예) package kr.co.ehan.pcmanager;
클래스 • 예제 package kr.co.ehan.classtest; public class ClassExam { private String memberVar; public ClassExam() { System.out.println("생성자는 객체가 생성될때 제일먼저 호출됩니다"); System.out.println("memberVar의 값을 \"멤버변수\"로 초기화 합니다."); memberVar = "멤버변수"; } public void method() { System.out.println("memberVar : " + memberVar); } } import kr.co.ehan.classtest.ClassExam; public class ClassTest { public static void main(String args[]) { System.out.println("new 연산자를 사용해 객체를 생성합니다"); ClassExam obj = new ClassExam(); obj.method(); } }
클래스 • 실행결과
클래스 • JAR나 ZIP 형식의 압축파일 형태로 배포된다. • jar cvf 파일이름.jar 포함시킬파일 (예) jar cvf classes.jar list
클래스 • java.util.Date • Date 클래스는 특정 시점을 나타내기 위한 클래스 • 밀리세컨드 단위를 사용한다. • JDK 1.1에서 사용하던 메서드의 대부분을 Calendar 클래스의 메서드로 대체하여 사용하도록 권장하고 있다. • 현재는 long getTime() 메서드와 Date 클래스 객체를 해당 GMT 시간으로 설정하는 void setTime (long time)정도가 사용되고 있다.