공부 자료/JAVA

(JAVA) 객체지향 프로그래밍 1

뚜루뚜루세니 2021. 8. 14. 12:59
728x90
  • 객체지향 언어의 특징

1. 코드의 재사용성이 높음

- 새로운 코드를 작성할 때 기존의 코드를 이용-> 쉽게 작성 가능

2. 코드의 관리가 용이

- 코드간의 관계를 이용해서 적은 노력으로 쉽게 코드 변경 가능

3. 신회성 높은 프로그래밍 가능

 

객체지향적 언어는 따라서  프로그래밍 언어와 객체지향 개념의 규칙이 합쳐진 것이다.

객체지향 개념에는 캡슐화, 상속, 추상화, 다형성이 있다.

 

  • 클래스와 객체

클래스란 객체를 정의해 놓은 것이다. 즉, 객체의 설계도 또는 틀이라고 정의할 수 있다.

클래스는 객체를 생성하는데 사용되고, 객체는 클래스에 정의된 대로 생성된다.

 

객체란 클래스에 정의된 내용대로 메모리 생성된 것을 뜻한다. 

객체의 용도는 객체가 가지고 있는 기능과 속성에 따라 달라지게 된다.

 

결국, 클래스는 객체를 생성하는데 사용될 뿐, 객체 그 자체는 아니다. 원하는 기능의 객체를 사용하기 위해서는, 클래스로 부터 객체를 생성하는 것이 선행되어야 한다.

객체를 사용한다는 것은 객체게 가지고 있는 속성과 기능을 사용한다는 뜻이기도 하다.

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

객체는 속성과 기능의 집합

클래스로부터 객체를 생성하면, 클래스에 정의된 속성과 기능을 가진 객체가 만들어진다.

객체지향 프로그래밍에서는 속성 --> 변수 & 기능 --> 메서드 로 표현한다. 

 

EX) 구분자와 텍스트를 입력하는 프로그램

1
2
3
4
5
6
7
8
9
10
11
12
13
14
public class MyOOP {
 
    public static void main(String[] args) {
        
        System.out.println("----");
        System.out.println("A");
        System.out.println("A");
        
        System.out.println("----");
        System.out.println("A");
        System.out.println("A");
    }
 
}
cs

 

이러한 프로그램에서 중복되는 작업을 메소드로 추출을 해서 만들면 다음과 같다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public class MyOOP {
 
    public static void main(String[] args) {
        
        printA();
        
        printA();
    }
 
    public static void printA() {
        System.out.println("----");
        System.out.println("A");
        System.out.println("A");
    }
 
}
cs

만약에 다른 텍스트를 출력하고 싶다면 새롭게 메소드를 만들 수도 있다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
public class MyOOP {
 
    public static void main(String[] args) {
        
        printA();
        printA();
        
        printB();
        printB();
    }
 
    public static void printA() {
        System.out.println("----");
        System.out.println("A");
        System.out.println("A");
    }
    public static void printB() {
        System.out.println("----");
        System.out.println("B");
        System.out.println("B");
    }
}
cs

구분자를 클래스의 변수로 추출하면 간략하게 만들 수 도 있다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
public class MyOOP {
    public static String delimiter = "";
    
    public static void main(String[] args) {
        delimiter = "----";
        printA();
        printA();
        printB();
        printB();
        
        delimiter = "****";
        printA();
        printA();
        printB();
        printB();
    }
 
    public static void printA() {
        System.out.println(delimiter);
        System.out.println("A");
        System.out.println("A");
    }
    public static void printB() {
        System.out.println(delimiter);
        System.out.println("B");
        System.out.println("B");
    }
}
cs

 

  • 클래스의 장점

클래스는 관련있는 변수들과 메소드들을 묶어서 정리정돈할 수 있다. 위의 예시와 같이 구분자로 분리된 A문자열과 B 문자열을 출력하는 메소드를 Print라는 클래스로 따로 떼어내서 만들 수 있었다. Print 객체의 A메소드 이기 때문에 A를 출력하는 구나 라는 의미를 쉽게 유추할 수도 있다.

또한 이클립스를 사용하게 되면 접근할 수 있는 클래스의 메소드, 변수를 추천해주는 기능도 존재하기 때문에 프로그램을 작성하는데 편의성이 증진된다.

 

728x90

'공부 자료 > JAVA' 카테고리의 다른 글

(JAVA) 객체지향 프로그래밍 3  (0) 2021.08.16
(JAVA) 객체지향 프로그래밍 2  (0) 2021.08.16