JAVA의 정석 (ch 6) (1)

Du-Hyeon, Kim·2023년 7월 17일
0

JAVA

목록 보기
6/11
post-thumbnail

💻 6. OOP(객체지향 프로그래밍) I

🙉 OOPs란?

기존의 프로그래밍 방식에서 몇 가지 새로운 규칙을 추가하여 발전된 형식.
절차적 언어에 익숙한 프로그래밍 습관을 객체지향적으로 바꾸도록 노력해야 할 것이다.

<✍️ 주요특징>

  1. 코드이 재사용성이 높다.
    새로운 코드를 작성할 때, 기존의 코드를 이용하여 쉽게 작성할 수 있다.
  2. 코드의 관리가 용이하다.
    코드간의 관계를 이용해서 적은 노력으로 쉽게 코드를 변경할 수 있다.
  3. 신뢰성이 높은 프로그래밍을 가능하게 한다.
    제어자와 메서드를 이용해서 데이터를 보호하고 올바른 값을 유지하도록 하며, 코드의 중복을 제거하여 코드의 불일치로 이한 오동작을 방지할 수 있다.

"코드의 재사용성이 높고 유지보수가 용이하다"

<✍️ OOPs를 학습하는 관점>

  1. 재사용성
  2. 유지보수
  3. 중복된 코드의 제거
    의 관점에서 보자!!

🙉 Class and Object

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

  • 객체
    클래스로 실제로 메모리에 생성된 것

  • 객체의 구성 = 속성(proerties) + 매서드(methods)

ex)

class TV
{
	//properties part
	String color;
	boolean power;
	int channel;
    
	//methods part
	void power() {power != power}
	void channelUp() {channel++;}
	void channelDown() {channel--;}
	
}

정리:
class로 각각의 필요한 객체들을 생성하고(instance화),
그 객체들의 구성요소(properties, methods)를 활용해서 프로그래밍한다.

🙉 instance

  • 인스턴스화 : class로 부터 객체를 만드는 과정
    "책상은 인스턴스다" (X)
    "책상은 객체이다."(O)
    "책상은 책상 클래스의 객체이다" (X)
    "책상은 책상 클래스의 인스턴스이다." (O)

🙉 소소한 주의점

  • 하나의 .java에 하나의 class를 쓰는 것이 일반적이다.
  • 여러 class를 정의할 시, public class를 파일이름으로,
    public class가 없다면 아무 class이름으로 하면 된다.
  • 대소문자 구분 필수

🙉 예시1

class Ex6_1 { 
	public static void main(String args[]) { 
		Tv t;                   
		t = new Tv();        
		t.channel = 7;     
		t.channelDown();    
		System.out.println("Current channel" + t.channel); 
	} 
}

class Tv { 
	String color;
	boolean power;
	int channel;

	void power()   { power = !power; } 
	void channelUp()   {  ++channel; } 
	void channelDown() { --channel; }  
}

  1. class TV로 생성될 TV instance들의 object의 속성과 매서드를 선언.

  2. t라는 TV형 참조변수(TV 객체의 주소값 저장 가능한 변수)에 new TV();를 선언함으로서 t에 TV 인스턴스의 모든 속성과 매서드 부여.

  3. t.(속성 or 매서드)를 통해서 객체의 속성을 변경하거나, 객체 매서드를 실행시킨다.
  • 정리
    "인스턴스는 참조변수를 통해서만 다룰 수 있으며,
    참조변수의 타입은 인스턴스의 타입과 일치해야 한다."

🙉 객체배열

TV t1 = new TV(); //한 줄로 생성가능

TV[] tvArr = new TV[100];
//참조변수 배열(객체배열)을 생성
//이게 빡침 형태는 instance생성이랑 똑같으면서 한번 더 객체를 생성해야됨.
for(int i=0;i<100;i++){
	tvArr[i] = new tv();
}

🙉 데이터 처리를 위한 저장형태 발전과정

  1. 변수
  2. 배열
  3. 구조체(관련된 변수 여러개)
  4. 클래스(구조체 + 함수 집합)
  • C언어와 JAVA의 OOPs 차이를 체감할 수 있는 예시
    char vs string
C언어JAVA
문자열을 char의 배열로 다룸String 객체로 다룸
데이터와 함수 간의 밀접한 관계를 다루기 힘듬객체로 선언함으로서 이미 문자열을 다룰 수 있는 매서드들의 중요성과 클래스의 편의성을 알 수 있음

1개의 댓글

comment-user-thumbnail
2023년 7월 17일

잘 봤습니다. 좋은 글 감사합니다.

답글 달기