기술 개념

객체와 클래스, 쿠키와 세션, 오버로딩과 오버라이딩, 싱글톤패턴, 접근제어자

에어팟맥스 2023. 3. 12. 17:30

- 객체와 클래스의 차이

객체와 클래스는 객체 지향 프로그래밍(OOP)에서 중요한 개념이다.

클래스는 객체를 만들기 위한 청사진(blueprint)이라고 볼 수 있다. 즉, 객체를 만들기 위한 필드와 메서드를 정의하는 일종의 틀이라고 생각할 수 있다.

예를 들어, 자동차 클래스는 자동차 객체를 만들기 위한 필드와 메서드를 가지고 있다.

객체는 클래스의 인스턴스(instance)라고 볼 수 있다. 클래스를 바탕으로 실제로 만들어진 것이 객체이다.

예를 들어, 자동차 클래스에서 만들어진 객체는 실제 자동차이다.

객체는 클래스에서 정의한 필드와 메서드를 가지고 있으며, 필드는 객체의 상태(state)를 나타내고, 메서드는 객체의 동작(behavior)을 나타낸다.

따라서, 클래스는 객체를 만들기 위한 틀이고, 객체는 클래스를 바탕으로 실제로 만들어진 것입니다. 클래스는 여러 개의 객체를 만들기 위해 사용되며, 객체는 클래스에서 정의한 필드와 메서드를 가지고 있습니다.

 

 

- 쿠키와 세션의 차이

쿠키와 세션은 웹 개발에서 사용되는 기술로서, 사용자의 정보를 저장하고 유지하는 역할을 한다. 하지만 두 기술은 목적이나 사용 방법, 저장 위치 등에서 차이가 있다.

쿠키(Cookie)는 서버에서 생성하여 사용자의 웹 브라우저에 저장되는 작은 데이터 파일이다.

쿠키를 사용하면 클라이언트에서 서버로 요청을 보낼 때, 해당 쿠키가 함께 전송된다. 즉, 쿠키는 클라이언트 측에서 저장되기 때문에 브라우저를 종료하고 다시 접속해도 유지된다.

주로 로그인 상태 유지, 사용자 선호 설정 등을 저장하는 용도로 사용된다.

 

세션(Session)은 서버에서 생성되는 정보 저장 공간으로, 세션은 서버에서 생성되어 클라이언트에게 고유한 세션 ID를 부여하며, 이 ID를 쿠키에 저장하여 브라우저에서 서버로 요청을 보낼 때 세션 ID를 전달한다.

이러한 방식으로 세션은 클라이언트 측에 저장되는 쿠키와는 달리 서버 측에서 관리된다.

세션은 클라이언트가 브라우저를 종료하면 소멸되므로 보안이 중요한 정보를 저장하는 용도로 사용된다.

 

요약하면, 쿠키는 클라이언트 측에서 저장되고, 브라우저를 종료하더라도 지속적으로 사용할 수 있지만 보안에 취약하다.

세션은 서버 측에서 관리되고, 브라우저를 종료하면 삭제되지만 보안에 강력하다. 쿠키는 데이터 용량이 작고, 캐시와 같은 용도로 사용될 수도 있다. 세션은 데이터 용량이 크고, 로그인과 같은 인증과정에 사용될 수 있다.

 

 

 

- 오버로딩 오버라이딩 차이점

오버로딩(Overloading)과 오버라이딩(Overriding)은 객체지향 프로그래밍에서 다형성을 구현하는 방법 중 두 가지이다.

  1. 오버로딩(Overloading)
  • 같은 이름의 메서드를 중복 정의하는 것을 의미한다.
  • 메서드 이름은 같지만 매개변수의 개수나 타입이 다르면 서로 다른 메서드로 인식한다.
  • 오버로딩된 메서드들은 컴파일러가 인자를 보고 어떤 메서드를 호출할지 결정한다.
  1. 오버라이딩(Overriding)
  • 부모 클래스에 있는 메서드를 자식 클래스에서 재정의하는 것을 의미한다.
  • 메서드 이름, 매개변수의 개수, 타입, 반환 타입이 같아야한다.
  • 자식 클래스에서 오버라이딩된 메서드가 호출되면, 자식 클래스에서 재정의된 메서드가 호출된다.

즉, 오버로딩은 메서드 이름이 같지만 매개변수가 다른 경우에 사용하며, 오버라이딩은 상속 받은 메서드를 자식 클래스에서 재정의하여 사용하는 경우에 사용한다.

 

 

- 싱글톤 패턴

싱글톤 패턴(Singleton Pattern)은 클래스의 인스턴스를 하나만 생성하고, 그 인스턴스에 대한 전역적인 접근을 제공하는 패턴이다.

즉, 어떤 클래스의 객체를 단 한 개만 만들고 그 객체를 어디에서든지 참조할 수 있도록 하는 것이다.

싱글톤 패턴을 구현하기 위해서는 해당 클래스의 생성자를 private으로 선언하고, 해당 클래스 내부에 유일한 인스턴스를 생성하고 외부에서는 그 인스턴스에 접근할 수 있는 public static 메서드를 제공하는 것이 일반적이다.

싱글톤 패턴은 하나의 객체만을 사용하기 때문에 메모리 관리 측면에서 이점을 가질 수 있다.

또한, 전역 상태를 유지할 필요가 있는 경우나, 자원의 공유가 필요한 경우에 유용하게 사용될 수 있다.

그러나, 싱글톤 패턴이 과도하게 사용될 경우, 의존성이 높아져 코드를 유지보수하기 어려워질 수 있다.

 

 

 

- 접근제어자(private, default, protected, public)

접근제어자(access modifier)는 클래스, 변수, 메소드 등의 멤버들에 대한 접근 권한을 설정하는 키워드이다.

  • private: 해당 멤버는 같은 클래스 내에서만 접근 가능하다.
  • default(접근 제어자 생략 가능): 해당 멤버는 같은 패키지 내에서만 접근 가능하다.
  • protected: 해당 멤버는 같은 패키지 내에서 뿐만 아니라 상속받은 클래스에서도 접근 가능하다.
  • public: 해당 멤버는 어디서든 접근 가능하다.

각각의 접근 제어자는 다음과 같은 특징을 가지고 있다.

  • private: 클래스의 정보 은닉(캡슐화)을 위해 사용되며, 외부에서 함부로 접근하지 못하도록 한다.
  • default: 패키지 내에서만 접근 가능하므로, 같은 패키지에 속한 다른 클래스에서는 접근할 수 있지만, 다른 패키지에 속한 클래스에서는 접근할 수 없다.
  • protected: 상속과 관련하여 사용되며, 같은 패키지 내에서는 default와 동일하게 동작하지만, 다른 패키지에 속한 클래스에서도 상속받은 경우에는 접근할 수 있다.
  • public: 어디서든 접근 가능하므로, 모든 클래스에서 해당 멤버에 접근할 수 있다.

접근 제어자를 적절히 활용하여 정보 은닉과 데이터의 보안성을 높이고, 다른 클래스와의 상호작용을 제한하거나 허용할 수 있다.

'기술 개념' 카테고리의 다른 글

도커와 가상머신  (0) 2023.03.12
데이터베이스 개념  (0) 2023.03.12