java - OOP(객체 지향 프로그래밍) 클래스

Jong Ho Lee·2021년 8월 21일
0

JAVA

목록 보기
7/7
post-thumbnail

객체지향 프로그래밍(OOP)

OOP(Object Oriented Programming) : 객체의 관점에서 프로그래밍을 하는 것, 객체들을 유기적으로 연결하여 프로그래밍을 한다.
객체 ? 현실에서 실제로 존재하는 사물 또는 개념
객체지향 프로그래밍 = 객체 + 객체 + 객체 ..

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

클래스

클래스 ? 객체를 정의 해놓은 틀

  • 클래스는 객체를 생성하는 데 사용된다.
    객체는 클래스에 정의된대로 메모리상에 생성됨
    ex) 클래스 : 붕어빵 틀 > 객체 : 붕어빵

  • 인스턴스 : 클래스를 객체로 만들면 그 객체는 클래스의 인스턴스라고 한다.(사실상 객체와 인스턴스는 비슷한 의미, 객체가 더 포괄적)

  • 클래스(객체지향 프로그래밍)의 특징

    • 상속 : 상위(부모) 클래스의 속성이나 메서드를 물려받는 것
    • 추상화 : 객체의 공통적인 속성과 기능을 추출하여 정의하는 것, 불필요한 부분을 생략하고 필요한 부분만 구현할 수 있다.
    • 캡슐화 : 클래스(객체)를 이용함에 있어서 역할과 기능을 묶어서 하나의 캡슐형태로 만드는 것, 재사용하기 쉽다. 변경되어도 영향이 적다
    • 다형성(인터페이스) : 부모에게 상속받은 객체들이 여러형태로 재구성되는 것
      ex) A인터페이스의 a메서드를 A인터페이스를 구현한 B객체가 자신만의 고유한 a메서드를 만드는 것, 오버로딩
    • 은닉화 : 다른객체에게 자신의 정보를 숨기는 것
  • 클래스를 설계하는 과정(단계)
    1) 요구분석
    2) 특징(속성), 기능(메서드) 목록 작성
    3) 클래스 선언
    4) 객체 테스트
    5) 검토 및 유지보수
    6) 사용화
    7) 버젼관리 + 기능, 문제점 처리

  • 클래스의 선언형식
    접근지정자 기타제어자 class 클래스명 [extends 부모클래스] [implements 인터페이스] { }

  • 접근지정자(modifier)
    1) public : 다른 패키지에서도 이 클래스를 사용(참조, 상속)할 수 있다.
    2) default(빈 문자열) : 같은 패키지 내에서만 이 클래스를 사용할 수 있다.
    [중첩 클래스 선언시에만 사용할 수 있다]
    3) protected : 같은 패키지내에서 상속, 참조 가능, 다른 패키지에서는 상속 받을 수 있다.
    4) private : 같은 파일내에서만 상속과 참조 가능(xx.java파일)

    • private으로 선언된 필드에 접근하는 방법
      ㄱ. 접근지정자를 수정하는 방법
      ㄴ. getter, setter 함수를 생성하여 접근
  • 기타제어자
    1) abstract : 추상클래스로 선언할 때
    2) final : 최종 클래스 선언, 다른 클래스의 부모나 자식클래스가 될 수 없음
    3) static : static(정적) 클래스 선언

  • 클래스의 구성요소(멤버)
    1) 속성(특징) : 멤버변수(필드)
    2) 기능 : 메서드(멤버함수)

  • 클래스의 선언
    - 한 파일에는 하나의 클래스만 public으로 선언가능하다.
    - 파일이름과 public 클래스 이름이 반드시 동일해야한다.

  • 클래스의 사용
    ex) Car myCar = new Car(); 객체 생성

  • java에서 클래스, 객체, 인스턴스의 구분
    클래스 : 객체를 만들기 위한 설계도(틀)
    객체 : 클래스 타입으로 선언된 참조변수
    인스턴스 : 생성된 객체, 실제 객체가 있는 공간
    - 인스턴스화 : 클래스로 객체를 생성하는 과정(new 클래스명())

  • 클래스의 멤버변수들은 다 기본값으로 초기화되어져 있음

  • 생성자(constructor) 함수

    • 메서드명이 클래스명과 동일하다
    • 객체생성시 자동으로 호출됨
    • 매개변수 없는 생성자를 디폴트 생성자라고 한다.
      디폴트생성자는 생성자를 아무것도 만들지 않으면 자동으로 생성됨
    • 오버로딩 가능
    • 역할 : 필드 초기화
    • 상속되지 않는다
    • 리턴 자료형 X
  • this 키워드

    • this의 정의 : 객체의 주소값을 갖는 변수( 클래스 자기자신의 주소값을 갖는 참조변수 )
    • this의 용도
      1) 클래스의 멤버를 가리킬 때의 this(this.필드, this.메서드)
      2) 생성자에서 또 다른 생성자를 호출할 때의 this
      3) 홀로 단독으로 사용될때의 this : 인자, 리턴값
profile
초보개발자

0개의 댓글