///Class
특징 :
순서 과정 중요X
이해하기 쉽고 모듈화 재사용성

정의 :
객체 모델링을 통해서 추출된 객체의 자바 표현법
현실세계에서 바라본 관점으로 프로그래밍 하는것

//Object는 속성과 동작을 갖는다.
속성은 필드, 동작은 메서드
//객체지향 프로그래밍 순서
분석 : 1. 객체 추출(속성과 동작)
       2. 객체 모델링(추출된것중에서 필요한것들)
구현 : 3. 클래스 작성
       4. 클래스 생성과 사용

//UML표기법
+:public  #:protected  -:private  :default
클래스명

변수명(속성)
+변수명 : 리턴type

메서드명(동작)

-예제
학생 객체
속성 : 이름, 주소
동작 : 이름얻기, 주소얻기

Student클래스
----------------
-name : String
-address : String
------------------
+getName():String
+getAddress():String

//문법
[Modifier] Class 클래스명 {
 멤버변수
 멤버메서드
 생성자
}

-modifier(지정자) <-있어도 되고 없어도 되고
접근지정자 : public, default, protected, private
일반지정자 : static, abstract, final등

//멤버변수
-정의 : 객체 모델링에서 추출한 속성을 클래스에서 멤버변수로 표현(멤버필드, 인스턴스변수, attribute)
-선언 : [접근지정자][일반지정자] 데이터형  변수명;

-예제
public class Student{
private String name;
private String adddress;
public String getName(){ return name;}
public String getAddress(){ return address;}
}
//멤버 베서드
-정의 : 객체 모델링에서 추출한 동작을 클래스에서 멤버메서드로 표현
-선언 : [접근지정자][일반 지정자] 리턴타입 메서드명([arguments]){    //동작    }
-특징 : 호출되어야 수행, 메서드내에서 멤버변수 사용가능
/기능상 분류
worker 메서드 : 실제 동작이 구현된 메서드   ->> public void setName(String n) { name = n;}
caller 메서드 : worker를 호출하는 메서드 (호출할때는 worker메서드 이름과 argument가 동일해야함) 
                   ->>  Student s = new Student();    s.setName("대철");

/worker메서드  분류
-getter메서드 : caller메서드에서 호출한 worker메서드가 수행한 결과값을 caller쪽으로 돌려줄때 사용 값을 얻어올때 사용   (public String getName(){ return name; }
-setter메서드 : 값을 설정할때 사용  (public void setName(String n) { name = n; }

//객체 생성
정의 : 클래스를 사용하기 위해서 컴퓨터 메모리에 클래스를 생성하는것.
방법 : new키워드
형식 : 클래스 선언(객체선언)   Student s;
         클래스 생성(객체 생성)  s = new Student([argument]);
//인스턴스
new 를 이용하여 클래스를 메모리에 생성한 상태    (=클래스 객체)
클래스는 인스턴스의 설계도

//Handling클래스
분석/설계 단계 - > UML 클래스 다이어그램 작성
Student클래스를 객체 생성, 데이터 초기화, 수정, 삭제 등 의 작업을 하는 기능을 가진 Class
-특징 : main메서드를 갖는다.
          필요한 클래스를 객체 생성한다.
         생성된 인스턴스에 접근할수 있다.
          Handling클래스를 이용함으로 클래스를 재사용할수 있다.
-인스턴스 접근방법 : 레퍼런스변수.클래스멤버
예제) Student s = new Student();
        s.name = "대철";
        System.out.println( s.getName() );
//객체 생성시의 실행순서와 메모리 구조
Studen s = new Student();                ->(s는 지역변수, 레퍼런스변수, Student데이터 타입 변수)
1. 레퍼런스 변수 s가 stack에 저장된다. (초기값은 null -> 가리키고 있는 인스턴스가 없음)
2. new라는 키워드를 만나서 heap영역에 Student인스턴스가 생성된다.
3. 생성자를 호출  - 멤버변수를 초기화(null로 초기화)
4. = 에 의해서 s라는 레퍼런스변수가 Student인스턴스를 가리킨다.
//PDT변수와 RDT변수
-Primitive Data Type : 실제값을 갖는다.  int num = 4;
-Reference Data Type : 실제값이 저장된 위치값을 갖는다.  String name = "대철";

//생성자
정의 : 클래스가 객체생성될때 맨처음 호출되는것 반드시 클래스명과 동일
용도 : 인스턴스 변수를 초기화.
형식 : [접근지정자] 클래스명([arguments]){ 인스턴스변수 초기화 }
특징 : 메서드와 비슷한 기능
         리턴 타입이 없음
         컴파일러가 자동으로 default생성자를 삽입한다.
         명시적으로 생성자를 입력하면 default생성자는 생성되지 않는다.
        public Student(String n) { name = n; }                                  --        new Student();   #error
//overloading생성자
정의 : 같은 클래스에서 동일한 이름의 생성자가 여러개 존재하는것.
규칙 : 반드시 argument_list가 달라야한다(순서, 타입, 개수)
//overloading메서드
정의 : 같은 클래스에서 동일한 이름의 메서드가 여러개 존재하는것.
규칙 : 반드시 argument_list가 달라야한다(순서, 타입, 개수)
         return type은 달라도 된다.
예제 : public void go(){}
         public void go(int n){}
         public void go(String a){}
         public int go(String a, int n){}
         //public int go(int m){}
//psckage
정의 : 같은 종류의 클래스들을 모아놓은 그룹
특징 : 클래스들의 관리 목적으로 사용된다. API
방법 : package 패키지명;          또는 package 패키지명1.패키지명2;
규칙 : 반드시 클래스 첫라인, 소문자, 한번만 사용
예제 :
package test.hello;
public class HelloWorld{
  public static void main(String[] args){
     System.out.println("Hello World");
  }
}

일반 컴파일 : javac 클래스파일명.java
패키지컴파일 : javac -d 클래스저장위치 클래스파일명.java       = javac -d . HelloWorld.java
일반 실행 : java 클래스파일명
패키지실행 : java 패키지.클래스파일명                                   = java test.hello.HelloWorld
//import
용도 : 패키지가 다른 클래스 접근시 사용한다.
방법 : import 패키지명.클래스명;     또는 import 패키지명.*;
특징 : 반드시 클래스보다 먼저 선언, 모든  API사용시 반드시 import, java.lang패키지는 자동 import








 

 



 

신고
Posted by 대절님

댓글을 달아 주세요



티스토리 툴바