Published 2022. 10. 26. 16:17

 1. 객체지향언어 : "객체"를 "지향"하는 언어 (객체 중심으로 돌아감)


  2. 객체란?
      -사전적 정의 : 현실세계에 독립적으로 존재하는 모든것들
      -자바에서의 정의 : 메모리 영역 중 Heap영역에 생성되는 모든것들
       
 3. 객체지향 프로그래밍 : 현실 세계의 객체들간의 상호작용 프로그래밍을 통해 가상세계로 구현하는 과정
  
 4. 프로그램상에 필요한 객체들을 만들기 위해서는 
     => 클래스라는 틀을 먼저 만들어야됨 (객체들의 속성값들을 담아낼 그릇같은 존재)
     => 추상화 + 캡슐화 접목해서 
      
 5. 추상화 과정
     1) 내가 구현할 프로그램상에 필요한 객체들을 생각해보기 
     2) 그 객체들이 가지고 있는 공통적인 속성, 기능들을 모두 추출할 것 
     3) 추출한 것들을 가지고 내가 구현하고자하는 프로그램의 "실질적인 목적"에 맞춰 불필요한 것들을 제거해 나가기. 
     4) 최종적으로 추려진 속성들을 어떤 자료형으로, 어떤 변수명으로 할 것인지 생각 
    
  ex) 학생관리 프로그램
     1) 학생 관련 객체(홍길동 학생, 김영희 학생, 김말똥 학생,..)
     2) 공통적인 속성 및 기능들(이름,나이,주소,전화번호, 키, 몸무게,달리기속도,학년,반,국어점수,수학점수,머리색깔,발사이즈, 먹는다, 잠잔다,..)
     3) 학생 "인적사항"을 관리하는 프로그램 : 이름,나이,주소,전화번호,학년,     
          학생 "성적"관리하는 프로그램 : 이름,학년,반,국어점수, 수학점수
          학생 "건강"관리하는 프로그램 : 이름,나이,키,몸무게,학년,반,달리기속도,먹는다,잠잔다
         
      **결국 추려진것이 "이름, 나이, 키" 라는 가정하에 
     4) 이름: String name
          나이: int age
          키: double height
           
  6. 본격적인 프로그래밍
     1) "변수"만으로 프로그래밍 한다면?
        변수 = 하나의 자료형의 하나의 값만 보관
         
        홍길동 학생 객체-> String name1 = "홍길동"; int age1 = 20; double heitht1 = 162.3;
        김말똥 학생 객체-> String name2 = "김말똥"; int age2 = 21; double height2 = 173.5;
        강개순 학생 객체->
        ...
          
       >>>>  문제발생 => 수백명의 학생객체들을 만들고자 할때 수천개의 변수가 만들어짐
          
      2) "배열"만으로 프로그램을 한다면?
          배열 - 하나의 자료형에 여러개의 값들을 보관 
          
          학생들의 이름 String[] name= {"홍길동","김말똥","강개순",...};
          학생들의 나이 int[] age = {20,21,22,...};
          학생들의 키 double[] height = {162.3,173.4,182.7, ..};
           
          
      >>>  문제발생 => 기존의 학생정보를 지울때 잘못 지우면 값이 변질될 수 있음.
                          새로운 학생정보를 추가할 때에도 배열의 크기 변경 불가로, 배열 복사 후 값 추가하는 번거로움발생
                    
      3) '구조체'개념 
          구조체 - 여러개의 자료형에 여러개의 값들을 보관할 수있음
            
          String값도 담고, int값도 담고, double값도 담을 수 잇는 나만의 배열같은 자료형 => 클래스 
          Student라는 클래스 만들기 => model.vo (value object)

public static void main(String[] args) {
       
        //자바에서의 객체로 만들기 위해서
        // new라는 키워드를 이용해서 Heap영역에 생성
       
        Student hong = new Student(); //객체 생성구문(참조 자료형)
        hong.name = "홍길동";      
        hong.age = 20;
        hong.height = 162.3;
       
        System.out.println(hong); // 주소값
        System.out.println(hong.name+"님의 나이는 "+hong.age+"이고, 키는 "+hong.height+"cm입니다.");
       
        //김말똥 학생객체만들기
        Student ddong = new Student();
        ddong.name = "김말똥";
        ddong.age = 21;
        ddong.height = 172.3;
       
        System.out.printf("%s님의 나이는 %d이고, 키는 %.1fcm입니다.",ddong.name,ddong.age,ddong.height);

'JAVA' 카테고리의 다른 글

6_3. 객체 _클래스 선언부  (0) 2022.10.26
6_2 . 객체 캡슐화 (setter/getter)  (0) 2022.10.26
5_2. 배열의 복사(ArrayCopy)  (0) 2022.10.25
5. 배열 Array  (0) 2022.10.24
4_5. 제어문_ 분기문 continue  (0) 2022.10.21
복사했습니다!