Java의 정석 #4 - 객체지향 프로그래밍

김형우·2022년 7월 13일
0

Java의 정석

목록 보기
4/7

ch6-1. 객체지향 언어

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

  • C++ > Java > python
  • 설계에 대한 내용
  1. 코드의 재사용성이 높다
    • 코드를 한번 만들면 다른곳에서도 사용가능
  2. 코드의 관리가 용이하다(유지보수)
    • 빠른 변화에 대응이 쉽다
  3. 신뢰성 높은 프로그래밍을 가능하게 한다
    • 코드의 중복 제거

2. 객체지향 프로그래밍 (OOP : Object-orientied Programing)

  1. 캡슐화
  2. 상속
  3. 추상화
  4. 다형성

ch6-2. 클래스와 객체

  • 클래스의 정의 : 클래스란 객체를 정의해 놓은 석
  • 클래스의 용도 : 클래스는 객체를 생성하는데 사용

  • 객체의 정의 : 실제로 존재하는 것
  • 객체의 용도 : 객체가 가지고있는 기능과 속성에 따라 다름
클래스 객체
설계도 제품

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

  • 실제세계를 어떻게 하면 컴퓨터 안으로 옮겨 넣을까?
  • 하드웨어를 서프트웨어화 -> 컴퓨터안에서 실행가능하도록
    • 동영상, 오디오, TV 등
  • JVM도 엄밀히 말하면 HW를 SW화
  • 분석 & 관찰

1. 속성과 기능

  • TV를 소프트웨어화 시켜봄
  • 객체 = 속성(변수) + 기능(메서드)
    속성(변수) 크기, 길이, 높이, 색상, 볼륨, 채널 등
    기능(메서드) 켜기, 끄기, 볼륨 높이기, 볼륨 낮추기, 채널변경, 등
  1. 속성 + 기능
  • HW(TV)를 SW(class)화
class Tv {
  // 변수
  String color;
  boolean power;
  int channel;
  
  // 메서드
  void power() {
    power = !power;
  }
  void channelUp() {
    channel++;
  }
  void channelDown() {
    channel--;
  }
}

ch6-4. 객체와 인스턴스

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

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

  • 클래스 ---인스턴스화---> 인스턴스(객체)
    설계도 --- 제품생성---> 제품 사용

Q&A. 클래스와 객체

Q1. 클래스가 왜 필요한가?
A1. 클래스(설계도), 객체(제품)를 생성하기 위해
Q2. 객체가 왜 필요한가?
A2. 객체(제품)를 사용하기 위해
Q3. 객체를 사용한다는 것은?
A3. 객체(TV)가 가진 속성(변수)과 기능(메서드)을 사용하는 것

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

  • 올바른 작성 예

    Hello2.java
    public class Hello2 {}
    class Hello3 {}
    public class가 있는 경우, 소스파일의 이름은 반드시 public class의 이름과 일치해야 한다.
    Hello2.java
    class Hello2 {}
    class Hello3 {}
    public class가 하나도 없는 경우, 소스파일의 이름은 class의 이름 중 아무거나 가능하다.
    즉, 'Hello2.java', 'Hello3.java' 둘 다 가능하다.
  • 잘못된 작성 예

    Hello2.java
    public class Hello2 {}
    public class Hello3 {}
    하나의 소스파일에 둘 이상의 public class가 존재하면 안된다. 각 클래스를 별도의 소스파
    일에 나눠서 저장하던가 아니면 둘 중 한 클래스에 public을 붙이지 않아야 한다.
    Hello3.java
    public class Hello2 {}
    class Hello3 {}
    소스파일의 이름이 public class의 이름과 일치하지 않는다.
    소스파일의 이름을 'Hello2.java'로 변경해야 맞다.
    hello2.java
    public class Hello2 {}
    class Hello3 {}
    소스파일의 이름과 public class의 이름이 일치하지 않는다.
    대소문자를 구분하므로 대소문자까지 일치해야한다.
    그래서, 소스파일의 이름에서 'h'를 'H'로 바꿔야 한다.
  • ex) Hello2.java

// 하나의 소스파일(*.java)에는 하나의 클래스만 작성하는것이 바람직
public class Hello2 {} // 소스파일 이름은 public class이름과 일치
class Hello3 {} // 하나의 소스파일에는 하나의 public class만 허용
class Hello4 {}
profile
The best

0개의 댓글