ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [자바의 정석] ch6-1 ~ ch6-10 객체지향 언어 정리
    Programming Language/Java 2021. 7. 13. 23:50

    학원을 다니지만 진도가 너무 빨라서 별도로 유튜브 보며 정리중이다.

    (마침 학원에서 나눠준 책이 Java의 정석 기초편이라 남궁성님의 유튜브를 보는중..!)

    Java에서 가장 중요한 개념인 객체지향 부분은 두 번째로 듣고 있는데, 남궁성님이 말씀하신대로 정리를 하는 것이 학습에 도움될 것 같아 블로그에 정리해보려고 한다.

     

    자바의 정석 기초편에 60% 정도의 내용이 담겨있고 3판에 100%(실전)의 내용이 담겨있다고 한다.

    강사님은 기초편 + 3판까지 보고 웹이나 모바일 중 관심있는 부분의 실습을 진행할 것을 추천하심.. 

     

    ============================================================================

     

    ch6-1 객체지향 언어

    OOP(Object Oriented Programming)

    객체지향 언어: 80년대 초 소프트웨어의 위기에 빠르게 대응하지 못하였음 -> 해결책: 객체지향 언어 도입

    객체지향 언어 = 프로그래밍 언어 + 객체지향개념(규칙)

     

    핵심개념: 1)캡슐화, 2)상속, 3)추상화, 4)다형성

     

     

    ch6-2 클래스와 객체

    클래스: 객체를 정의해 놓은 것 (TV 설계도 혹은 붕어빵 기계)

    클래스의 용도: 객체를 생성할 때 사용

     

    객체: 실제로 존재하는 것. 사물 또는 개념 (TV 혹은 붕어빵)

    객체의 용도: 객체가 가지고 있는 기능과 속성에 따라 다름 

     

     

    ch6-3 객체의 구성요소 - 속성과 기능

    하드웨어의 소프트웨어화(프로그램화=코드)가 진행 (오디오플레이어가 컴퓨터 내부로 들어간 것 처럼)

     

    예를들어 TV 를 소프트웨어로 만들 경우 아래와 같은 속성과 기능이 필요하다.

     

    객체 = 속성(변수) + 기능(메서드)

    속성: 크기, 길이, 높이, 색상, 볼륨, 채널 등

    기능: 켜기, 끄기, 볼륨 높이기, 볼륨 낮추기, 채널 변경 등 

     

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    Class Tv{// Tv 클래스(Tv 설계도)
     
        //q
        String color;
        boolean power;
        int channerl;
     
        //메서드
        void power() {    
            power = !power;
        }
        void channelUp() {
            channel++;
        }
        
        void channelDown() {
            channel--;
        }
     
    }
    cs

     

    ch6-4 객체와 인스턴스

    객체: 모든 인스턴스를 대표하는 일반적 용어

    인스턴스: 특정 클래스로부터 생성된 객체(예: Tv인스턴스)

    -> 뉘앙스 차이가 있으나 객체와 인스턴스는 크게보면 같다고 생각하면됨

     

                           인스턴스화(제품생성)

    클래스(설계도) -------------------------------> 인스턴스,객체(제품)

     

     

    <-------------------------------------------------------------정리------------------------------------------------------------->

    Q. 클래스(설계도)가 왜 필요한가?

    A. 객체(제품)를 생성하기 위해

     

    Q. 객체(제품)가 왜 필요한가?

    A. 객체(제품)를 사용하기 위해

     

    Q. 객체(제품)를 사용한다는 것은?

    A. 객체(제품)가 가진 속성(변수)과 기능(메서드)을 사용하려고

     

     

    ch6-5 하나의 소스파일에 여러 클래스 작성

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Hello2.java
     
     
    public class Hello2 {
     
    }
     
     
    public class Hello3 {
     
    }
    cs

     

     

    *public class가 있는 경우, 소스파일의 이름은 반드시 public class의 이름과 일치해야함

    *public class가 없는 경우, 소스파일의 이름은 java 파일의 클래스명 중 원하는 것으로 사용 가능

    *하나의 소스파일에는 하나의 public class만 허용

    *하나의 소스파일에는 하나의 클래스만 작성하는 것이 바람직

     

    ch6-6 객체의 생성과 사용

    1.객체 생성 방법

    클래스명 변수명;             //클래스의 객체를 참조하기 위한 참조변수를 선언

    변수명 = new 클래스명(); //클래스의 객체를 생성 후, 객체의 주소를 참조변수에 저장

     

    Tv t;                            //Tv클래스 타입의 참조변수 t를 선언

    t = new Tv();                //Tv인스턴스를 생성한 후, 생성된 Tv인스턴스의 주소를 t에 저장

     

    -> t라는 참조변수(리모콘) 만들고 new Tv()라는 객체도 만들고 마지막으로 = 으로 리모콘과 Tv 연결

    한 문장으로 만들면 Tv t = new Tv();

     

    2. 객체의 사용

    t.Channel = 7;             //Tv인스턴스의 멤버변수 channel 의 값을 7로 한다. (t라는 리모콘으로 채널 조정)

    t.ChannelDown();         //Tv인스턴스의 메서드 channelDown()을 호출한다.

     

     

    클래스 작성 -> 객체 생성 -> 객체 사용

     

    *Tv와 Tv리모콘의 타입이 일치해야함 (에어컨 리모콘으로 Tv를 켤 수는 없으니까^^)

     

    ch6-7 객체의 생성과 사용 - 예제

     

    *하나의 인스턴스를 여러 개의 참조변수가 가리키는 경우(가능)

    *여러 인스턴스를 하나의 참조변수가 가리키는 경우(불가능)

     

    *가비지 컬렉터: 불필요한 메모리 낭비를 방지하기 위해 사용하지 않는 메모리 정리(제거)해줌

     

     

    ch6-8 객체 배열

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

    Tv tv1, tv,2, tv3;   ->  Tv[] tvArr = new Tv[3];      (Tv타입 참조변수 * 3개라는 뜻)

     

     

    ch6-9 클래스의 정의(1)

    클래스 

    1)설계도

    2)데이터+함수

    3)사용자정의타입

     

    클래스 == 데이터 + 함수

     

    변수 -> 배열(같은 타입만) -> 구조체(다른타입도 가능) -> 클래스(서로 관련 있는 데이터, 함수 묶어놓음)

     

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

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

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

    4)클래스: 데이터와 함수의 결합(구조체 + 함수)

     

     

    ch6-10 클래스의 정의(2)

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

     

    class Time{

         int hour;

         int minute;

         int second;

    }

     

                                                                            Time t = new Time();

    int hour = 12;                                                       t.hour = 12;

    int minute = 34;                       ->                          t.minute = 34;

    int second = 56;                                                    t.second = 56;

     

     

    ============================================================================

     

    유튜브 링크(ch6-1): https://www.youtube.com/watch?v=CXuA31XcBZ0&list=PLW2UjW795-f6xWA2_MUhEVgPauhGl3xIp&index=50 

     

     

    댓글

Designed by Tistory.