Java 의 정석 - 객체지향 개념 (ch6 -8~21)

kyoungyeon·2022년 2월 27일
0

JAVA 기초

목록 보기
2/2

✍ 인강 요약

📖 JAVA의 정석 - ch 6 - 8 - 객체배열

1. 객체 배열 == 참조 변수 배열

//예시 1 -TV 타입 참조 변수 
Tv tv1, tv2, tv3 ; 
Tv[]tvArr = new Tv[3]; // 객체생성!
tvArr[0] = new Tv(); // 객체생성! 

t1 0*100  // tv 객체 
t2 0*200 // tv 객체 
t3 0*300 // tv 객체 
Tv[] tv Arr ={new Tv(), new Tv(), new Tv()};
tvArr [] 

  • 참조변수 t1, t2, t3 -> 하나의 배열 -> 참조변수 배열 [] 여러개 묶어서 하나의 객체로 만든다

  • Q 참조 변수 3개를 배열로 만들어서 -> 객체화 ?? 개념이 다른거 아닌가요?

    A
    A 참조변수 생성 과정 -> 객체 배열은 단순히 참조변수 배열이기에 객체를 채워서 넣어준다.

    객체배열 == 참조변수 (여러개를 묶은 하나의) 배열

📖 JAVA의 정석 - 6-9.10 클래스 정의

1 . 클래스 정의

1. 설계도 
2. 데이터 + 함수
3. 사용자 정의 타입

2. 변수 : 하나의 데이터를 저장할 수 있는 공간

3. 배열 : 같은 종류의 여러 데이터를 하나로 저장할 수 있는 공간

4. 구조체 : 서로 관련된 여러 데이터 (종류 관계 x)를 하나로 저장할 수 있는 공간

+ 다른 타입도 ok 
+ 서로 관계 

5. 클래스 : 서로 관련있는 데이터와 함수 (구조체 함수)

6. 사용자 정의 타입: 원하는 타입을 직접 만들 수 있다.

//예시1
//객체지향적인 코드 - 코드가 서로 결합적이다, 유지보수에 편하다, 
class Time {
int hour;
int minute; 
int seconds; }
Time t = new Time();
t.hour = 12;
t.minute = 34;
t.second = 56; 
//비교 
//비 객체지향적인 코드 
int hour;
int minute; 
int seconds;
  • 3개의 변수 === 3개의 저장 공간

  • t [0*100] 이라는 참조변수 => 저장공간 3개

📖 JAVA의 정석 - 6-11 - 선언 위치에 따른 변수의 종류 (타입)

Class Variables {
int iv; //인스턴스 변수   -1 
static int cv;  // 클래스 변수 static 변수, 공유변수   -1 
	{
	int lv = 0 } // 지역 변수  - 2 
}
변수의 종류선언위치생성시기
cv클래스 영역클래스 메모리에 올라갈 때 ,선언문만 가능(ex 변수 선언, 메서드 선언)
iv(static+)클래스 영역인스턴스 생성 시 ,선언문만 가능(ex 변수 선언, 메서드 선언)
lv클래스 외 영역 (메서드, 생성자, 초기화 블럭 내부)변수 선언문이 수행되었을 때, 메서드 선언(정의)

2 . 차이점

  • cv :객체 생성이 필요없다 왜? 아무때나 사용 가능 (자동 생성 )
  • iv : 객체 생성이 필요하다 왜? 객체 생성을 한 후 사용 가능하다.

주의
lv : 메소드 scope 범위 주의 메소드 종료시 자동 제거
iv ,cv : 클래스 scope 전역변수
객체 = 인스턴스, 인스턴스 변수 여러개 , iv를 묶어 놓은것

ex )
cpu <-> Ram (메모리 ) <-(속도차이) ssd/hdd Time.class (설계도)
로딩 :디스크에서 메모리에 얹는다
세이브 :메모리에서 디스크에 저장한다
cpu는 ram 하고만 읽고 쓴다 (작업한다)

  • 객체 = iv 변수 묶음

  • iv는 참조변수 없어지면 가비지 컬렉터에 의해 제거

📖 JAVA의 정석 - 6-12,13 클래스 변수 와 인스턴스 변수

1. 개별 : 객체마다 다르게 유지

    • cv- > static -> 공통 속성
    • iv - > 개별 속성
Card c = new Card();
Card.width = 20 //클래스 이름. 속성이름

c.number =5; // 인스턴스 속성

ex -flash )
iv -> heap에 저장된다 객체 2개 = iv 2개 (iv 1개 /객체당)
main()메소드 -> call stack 한다
설계도, cv -> method area 에서 1개만 만들어진다.

추가로 해야 할 것 :

  • flash 동영상 그림 그려보기
  • cv - 자동으로 만들어짐 (공유)
  • iv - 객체를 만들때마다 출력

📖 JAVA의 정석 - 6-14~16 메서드란?

1. 문장들을 묶어 놓은 것

1-1. 코드중복 나쁨! -> 메소드를 호출해라 !
1-2. 작업단위로 묶는다

2. 값(입력)을 받아서 처리, 결과를 반환 (출력)

2-1. 함수 - 클래스에 독립적, 메서드 -클래스 안에서 선언
2-2. 작업 사용한 값들 (입력) -> 블랙 박스 (덧셈) -> 출력



3. 메서드의 장점

3-1. 코드 중복 제거
3-2. 코드 관리 용이
3-2. 코드 재사용
3-2. 코드 간결화 가독성 높임

4. 메서드 작성

4-1. 반복적으로 수행되는 여러 문장 메서드 작성 - 간결화
4-2. 하나의 메서드는 한 가지 기능만 수행하도록 작성

5. 메서드 구성 요소

5-1. 메서드 = 선언부 + 구현부

선언부구현부
반환타입,메서드(타입변수명.. 매개변수목록(입력), 작업 필요한 값들)메서드 호출시 수행될 코드
작업결과 타입(출력){}로 묶인 문장

6. 메서드 값

6-1. 값이 여러개 출력시 = 배열 이용해서 하나의 객체로 묶어서 만들어준다
6-2. 반환 값이 없을 경우 = void 선언

7. 메서드의 구현부

7-1. 지역변수 - 메서드 내에 선언된 변수
7-2. 메서드 영역이 다르면 변수 이름이 같아도 ok , 겹치지 않는다
7-3. 매개 변수 = 지역변수

📖 JAVA의 정석 - 6- 17~19 메서드 호출

1. 메서드 호출

1-1. 메서드 이름 (값1,2,...) //메서드 호출방법

        print99(); // void print99()를 호출 -> 반환값이 없다 (void가 반환타입)
        public static void main(String[] args){
        int result= add(3,5); // int add(intx, y)호출 하고 결과 result에 저장
        int add(int x, int y); // 3,5 대입
        int result = x+y; // 3 +5 
        return result; // 반환 
        }

1-2. 작업 결과를 저장할 변수 int reuslt , 매개변수 parameter
1-3. 작업 순서 유의

메서드 작업을 마치면 -> 메서드를 호출한 곳으로 다시 돌아온다!

1-4. 자동형변환이 가능! (메소드의 매개변수에서만)

2. 메서드 실행 흐름

  `객체 생성 >  메서드 호출 >  return 반환값 > 원래 호출한 곳으로 > 작업 결과가 바뀜`        

📖 JAVA의 정석 - 6-20,21 return 문

1. 정의 : 실행(작업)중인 메서드를 종료 하고 호출한 곳으로 되돌아간다.

        void printGugudan(int dan){
			if(!(2<=dan && dan <=9))
            return; // dan 이 if 조건문에 맞지 않을경우, 호출한 곳으로 그냥 되돌림
            
            for(int i = 1; i<=9; i++){
            System.out.println("%d%n",dan, i)
            }
            return; //반환 타입이 void = 생략가능! = 컴파일러가 자동추가 
        } 

1-1. 주의
return 반환 타입이 void = 생략가능! = 컴파일러가 자동추가

      int max (int a, int b){
      if (a>b) //참
      return a;
      else //거짓 (a<b)
      reutnr b;
      }

2. 반환 타입이 void 가 아닐때

2-1. 메서드 타입이 일치 해야한다. (return 시 자동 형변환)
2-2. 반환타입과 일치 , 결과를 담을 변수 타입과도 일치해야함.

✍ 앞으로 남은 분량

6-22
6- 23
6 -24,25
6-26~29
6 - 30~31
6- 32~35
6-36,37
6-38~41

💡 Reference


마크다운 사용법

profile
🏠TECH & GOSSIP

0개의 댓글