ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Java] 객체지향 프로그래밍
    프로그래밍/JAVA 2022. 8. 6. 10:12
    728x90

     

     

    객체지향 프로그래밍(OOP, Object-Oriented Programming)은 실제 세계를 모델링하여 소프트웨어를 개발하는 방법으로, 모든 데이터를 객체로 취급하며 이러한 객체의 상태와 행동을 구체화하는 형태의 프로그래밍 기법이다.

     

    절차지향 프로그래밍은 물이 위에서 아래로 흐르는 것처럼 순차적인 처리가 중요시되어, 프로그램 전체가 유기적으로 연결되도록 만드는 프로그래밍 기법이다. 가독성은 좋지만 협업의 어려움이 있다.

     

    그에 반해 객체지향 프로그래밍은 협업에 유리하다는 장점이 있지만 초기 설계가 어렵다.

     


    클래스(class)

    클래스는 객체를 정의하는 틀 또는 설계도와 같은 의미한다. 하나의 클래스로 여러 객체를 생성하여 사용하게 된다.

    클래스는 객체의 상태를 저장하는 필드(변수)와 객체의 행동을 나타내는 메소드(함수)로 구성된다.

    접근제어자 class 클래스명{
        자료형 필드1;
        자료형 필드2;
        ...
    
        메소드1(){
        ...
        }
        메소드2(){
        ...
        }
        ...
    }
    
    
    // 예시
    public class User {
        // 필드
        String id;
        String name;
        String pass;
        int age;
        double point;
    
        //메소드
        public void info() {
            System.out.println("아이디 : " + id);
            System.out.println("이름 : " + name);
            System.out.println("비밀번호 : " + pass);
            System.out.println("나이 : " + age);
            System.out.println("포인트 : " + point);
        }
    }

     

    객체 선언

    자바에서 클래스를 사용하기 위해서는 클래스 타입의 객체(인스턴스)를 선언(인스턴스화)해야한다. 

      클래스명 객체명 = new 생성자();
      User user = new User();

    자바에서는 하나의 클래스로부터 여러개의 인스턴스를 생성하고 그들은 독립된 메모리 공간에 저장된 자신만의 필드를 가지게된다. 하지만 해당 클래스의 메소드는 해당 클래스에서 생성된 모든 인스턴스가 공유하게된다.

    // 객체의 배열 생성
    클래스명[] 참조변수 = new 클래스명[요소의 개수];
    Member[] members = new Member[3];
    members[0] = new Member();
    members[1] = new Member();
    members[2] = new Member();

     

    ✔ 여기서 객체와 인스턴스의 차이

    객체는 소프트웨어 세계에서 클래스에 선언된 모양 그대로 생성할 대상(실체)을 의미하고

    인스턴스는 설계도(클래스)에 따라 구현해야할 대상이 실제로 구현된 구체적인 실체 즉 객체가 메모리에 할당되어 실제 사용될 때를 인스턴스라고 한다.

     

    [참조] http://tcpschool.com/java/java_class_intro

     

     

     

     

     

    728x90

    '프로그래밍 > JAVA' 카테고리의 다른 글

    [Java] 필드(field)  (0) 2022.08.06
    [Java] 생성자(constructor)  (0) 2022.08.06
    [Java] String 클래스  (0) 2022.08.06
    [Java] 배열(Array)  (0) 2022.08.06
    [Java] 중첩 반복문  (0) 2022.08.03

    댓글

Designed by Tistory.