35. [프로그래밍 언어 활용] 클래스(Class)

y55n·2022년 4월 1일
0

정보처리기사

목록 보기
36/50
post-custom-banner

수제비 2022 정보처리기사 실기 수험서를 보고 공부한 기록입니다.


  • 클래스는 객체 지향 프로그래밍(OOP; Object-Oriented Programmin)에서 특정 객체를 생성하기 위해 변수와 메서드를 정의하는 틀이다
  • C 언어는 명령형 프로그래밍으로 클래스를 지원하지 않는다

👉접근 제어자(Access Modifier)

접근 제어자는 지정된 클래스, 변수, 메서드를 외부(같은 패키지이거나 다른 패키지)에서 접근할 수 있도록 권한을 설정하는 기능이다

▼ 접근 제어자 종류

  • public 
    • 외부의 모든 클래스에서 접근이 가능한 접근 제어자
  • protected
    • 같은 패키지 내부에 있는 클래스, 하위 클래스(상속받은 경우)에서 접근이 가능한 접근 제어자
    • 자기 자신과 상속받은 하위 클래스 둘 다 접근이 가능한 접근 제어자
  • default
    • 접근 제어자를 명시하지 않은 경우로 같은 패키지 내부에 있는 클래스에서 접근이 가능한 접근 제어자
    • 자바에만 존재하는 접근 제어자
  • private
    • 같은 클래스 내에서만 접근이 가능한 접근 제어자

👉클래스 사용

1. 클래스 정의

  • 클래스는 변수와 메서드(함수) 형태로 구성되어 있다
  • 클래스에서 변수는 변수 선언과 동일하고, 메서드는 사용자 정의함수와 문법이 동일하다
  • 파이썬은 별도로 변수 선언을 하지 않기 때문에 메서드 형태로 구성되어 있다

▼ 자바 클래스 정의

public class 클래스명{
	private 변수_타입 변수명;
	public 반환_데이터_타입 메서드명(데이터_타입 변수명, ...){
		명령어;
		return 반환값;
	}
}

▼ 파이썬 클래스 정의

class 클래스명:
	def 메서드명(self, 변수명, ...):
		명령어
		return 반환값
  • 파이썬에서는 함수명에 입력받을 값(매개변수) 앞에 self라는 키워드를 적어야 한다

2. 자신 클래스 참조

① this 포인터

  • this 포인터는 현재 객체를 가리키는 포인터이다
  • 자바에서 사용하는 것으로 클래스 내부의 변수와 함수를 가리킬 수 있다
this.변수;
this.함수(매개변수);

② self

  • self는 현재 객체를 가리키는 포인터이다
  • 파이썬에서 사용하는 것으로 클래스 내부의 변수와 함수를 가리킬 수 있다
self.변수명;
self.함수명(매개변수);

3. static 메서드

  • 클래스가 메모리에 올라갈 때 자동적으로 생성되는 메서드이다
  • 인스턴스를 생성하지 않아도 호출이 가능하게 된다

4. 클래스 선언

  • 클래스를 일반변수로 선언한 경우 선언함과 동시에 생성자가 호출되고, 일반변수로 선언한 곳에서 함수가 종료되면 소멸자가 호출된다

▼ 자바 클래스 선언

클래스 클래스변수=new 클래스(매개변수); //생성시
클래스변수.finalize(); //소멸시

▼ 파이썬 클래스 선언

클래스변수=클래스(매개변수) # 생성시
del 클래스변수	# 소멸시

👉생성자(Constructor)

  • 생성자는 해당 클래스의 객체가 생성될 때 자동으로 호출되는 특수한 종류의 메서드이다
  • 생성자는 일반적으로 클래스의 멤버 변수를 초기화하거나 클래스를 사용하는 데 필요한 설정이 필요한 경우 사용한다
  • 자바에서는 클래스 명과 동일한 메서드명을 가지고, 반환 값이 없다
  • 파이썬에서는 __init__ 이라는 메서드명을 사용하고, 첫 번째 매개변수로 self를 적어주며, 반환 값이 없다

▼ 자바에서 사용하는 생성자

public class 클래스명{
	public 클래스명(데이터_타입 변수명, ...){
		명령어;
	}
}

▼파이썬에서 사용하는 생성자

class 클래스명:
	def __init__(self, 변수명, ...):
		명령어

👉소멸자(Destructor)

  • 소멸자는 객체의 수명이 끝났을 때 객체를 제거하기 위한 목적으로 사용되는 메서드이다
  • 자바에서는 finalize라는 메서드를 사용하며, 반환 값이 없다
  • 파이썬에서는 __del__이라는 메서드명을 사용하고, 첫 번째 매개변수에 self를 적어주며, 반환 값이 없다

▼ 자바에서 사용하는 소멸자

public class 클래스명{
	public void finalize(매개변수){
		명령어;
	}
}

▼ 파이썬에서 사용하는 소멸자

class 클래스명:
	def __del__(self):
		명령어

👉상속(Inheritance)

  • 상속은 어떤 객체가 있을 때 그 객체의 변수와 메서드를 다른 객체가 물려받는 기능이다
  • 자식 클래스를 생성하면 무조건 부모 클래스의 생성자를 실행한 후에 자식 클래스의 생성자를 실행한다

▼ 자바 상속

class 부모_클래스명{
}
class 자식_클래스명 extends 부모_클래스명{
}

▼ 파이썬 상속

class 부모_클래스명:
	...
class 자식_클래스명(부모_클래스명):
	...

1. 오버로딩(Overloading)

  • 오버로딩은 동일 이름의 메서드를 매개변수만 다르게 하여 여러 개 정의할 수 있는 기능이다
  • 파이썬에서는 오버로딩 기능을 지원하지 않는다
  • 오버로딩 특징은 다음과 같다
    • 메서드 이름이 같아야 한다
    • 매개변수 개수가 달라야 한다
    • 매개변수 개수가 같을 경우 데이터 타입이 달라야 한다
    • 반환형은 같거나 달라도 된다

2. 오버라이딩(Overriding)

  • 오버라이딩은 하위 클래스에서 상위 클래스 메서드를 재정의할 수 있는 기능이다
  • 오버라이딩 특징은 다음과 같다
    • 오버라이드하고자 하는 메서드가 상위 클래스에 존재하여야 한다
    • 메서드 이름은 같아야 한다
    • 메서드 매개변수 개수, 데이터 타입이 같아야 한다
    • 메서드 반환형이 같아야 한다

▼ 자바 오버라이딩

class 부모_클래스명{
	public 반환_데이터_타입 메서드명(데이터_타입 변수명){
	}
}

class 자식_클래스명 extends 부모_클래스명{
	public 반환_데이터_타입 메서드명(데이터_타입 변수명){
		//부모 클래스의 메서드명, 매개변수가 동일해야 함
	}
}

▼ 파이썬 오버라이딩

class 부모_클래스명
	def 메서드명(self, 변수명):
		#명령어

class 자식_클래스명(부모_클래스명)
	def 메서드명(self, 변수명):
		#명령어
		#부모 클래스의 메서드명, 매개변수의 개수가 동일해야 함

3. 상위 클래스 접근

자바와 파이썬은 super 키워드를 이용하여 상위 클래스의 변수나 메서드에 접근할 수 있다

▼ 자바 상위 클래스 접근

super.메서드명()

▼ 파이썬 상위 클래스 접근

super().메서드명()

👉추상 클래스

추상 클래스는 미구현 추상 메서드를 한 개 이상 가지며, 자식 클래스에서 해당 추상 메서드를 반드시 구현하도록 강제하는 기능이다

▼ 자바 추상 클래스

abstract class 클래스명{
	abstract 데이터_타입 메서드명();
}

▼ 파이썬 추상 클래스

class 클래스명:
	def 메서드명(self):
		pass

👉인터페이스

  • 인터페이스는 자바의 다형성을 극대화하여 개발코드 수정을 줄이고 프로그램 유지보수성을 높이기 위한 문법이다.(인터페이스는 일종의 추상 클래스이다)
  • 오직 추상 메서드와 상수만을 멤버로 가질 수 있으며, 그 외의 다른 어떠한 요소도 허용하지 않는다
  • 인터페이스는 구현된 것은 아무것도 없고 밑그림만 그려져 있는 '기본 설계도'라고 할 수 있다

▼ 자바 인터페이스

interface 클래스명{
	데이터_타입 메서드명();
}
profile
나 혼자 공부 기록
post-custom-banner

0개의 댓글