디자인 패턴중 하나인 싱글톤에 대해서 알아보자. 싱글톤(Singleton) 패턴의 정의는 단순하다. 객체의 인스턴스가 오직 1개만 생성되는 패턴을 의미한다. 즉 클래스를 통해 생성할 수 있는 객체는 Only One, 즉, 한 개만 되도록 만드는 것이 싱글톤이다. classSingleton { private Singleton() { } } publicclassSample { publicstaticvoidmain(String[] args) { Singleton singleton =newSingleton(); // 컴파일 오류가 발생한다. } } 위와 같은 코드를 작성하면 컴파일 에러가 발생한다. 왜냐하면 Singleton 클래스의 생성자에 private 키워드로 다른 클래스에서 Singleton 클래스의 생..
JVM (Java Virtual Machine) 자바 프로그램을 실행할 수 있는 가상머신 자바와 OS사이에서 중재자 역할을 수행하고 자바가 운영체제에 구애 받지 않고 프로그램을 실행할 수 있도록 해준다 GC(가비지 컬렉터)를 사용한 메모리 관리를 실행. 따라서 한정된 메모리를 사용해서 최고의 성능을 내기 위해서는 JVM의 이해가 필수적 JVM 내부 구조와 역할 Class Loader : 동적으로 클래스를 로딩해주는 역할을 수행 .class파일을 묶어서 JVM이 운영체제로부터 할당받은 메모리 영역 (Run Data Area)에 올리는 역할 바이트 코드(클래스파일)을 읽어 메모리에 올리는 역할 Execution Engine (실행엔진) : 클래스를 실행하는 역할을 수행. 클래스 로더가 JVM내의 Runtim..
입력과 버퍼의 관한 정리 우선 우리가 키보드를 통해 키입력을 받으면 입력받은 내용이 버퍼라는 기억공간에 저장이 된다. 또한 콘솔에서 아무 키만 입력된다고해서 입력이 되는것이 아니라 마지막에 엔터키를 눌러야 지금까지 눌렀던 내용이 버퍼에 전달되어 저장이 된다. 먼저 키보드로 120 라고 입력했다고 가정하자. 참고로 엔터에 해당하는 코드 문자는 \r\n 이다. 그럼 버퍼에는 120라고 들어갈 것이다. 입력은 nextInt() 메서드가 실행된이후 버퍼에 내용이 있는지 확인하게 된다. 처음이니 버퍼에 내용은 없다. 따라서 키보드로부터 사용자의 입력을 기다리는 상태가 되고, 위에 가정한대로 입력을 받게 된다. 그리고 버퍼에서 공백,탭문자,개행문자(엔터)를 구분으로 해서 하나의 단어를 가져..
📌클래스(Class) 클래스란, 객체를 만들어 내는 설계도 혹은 틀이다. 서로 연관되어 있는 변수, 메서드의 집합이다. class Animal { // 변수 String name; int age; // 메서드 void run(){ System.out.println(name + "달려"); } void eat(){...} } 클래스의 구성 class 키워드를 이용하여 선언한다. 필드 = 멤버 변수 캡슐화의 원칙으로 클래스 외부에 어떤 변수나 메서드가 위치해서는 안된다. 📌객체(Object) 실세계에서 우리 주변에 있는 TV, 책, 의자, 사람 등 모든 것이 객체이다. 객체는 자신만의 고유한 상태와 행동을 가지며 서로 상호작용하며 존재한다. 이러한 객체는 클래스로부터 생성된다. 자신만의 고유한 상태인 필드(..
오버로딩 : 기존에 없는 새로운 메서드를 정의하는 것 (new) 오버라이딩 : 상속받은 메서드의 내용을 변경하는 것 (change, modify) class Parent { void parentMethod() {} } class Child extends Parent { void parentMethod() {} // 오버라이딩 void parentMethod(int i) {} // 오버로딩 void childMethod() {} void childMethod(int i) {} // 오버로딩 } 바인딩 오버로딩 : 정적 바인딩, 호출될 메소드가 컴파일 시점에 결정된다. (컴파일 다형성) 오버라이딩 : 동적 바인딩, 호출될 메소드가 실행 시점에 결정된다. (런타임 다형성) 바인딩이란 프로그래밍에서 컴각종 값들..
Facde 패턴 정의 퍼사드 패턴(Facade Pattern)의 Facade는 "건물의 정면"을 의미하는 단어로 어떤 소프트웨어의 다른 커다란 코드 부분에 대하여 간략화된 인터페이스를 제공해주는 디자인 패턴을 의미한다. **퍼사드 패턴(Facade Pattern)**은 구조 패턴의 한 종류로, 서브 시스템들의 공통적인 기능을 정의하는 단순화된 상위 수준의 인터페이스를 정의하는 패턴이다. 퍼사드 객체는 복잡한 소프트웨어 바깥쪽의 코드가 라이브러리의 안쪽 코드에 의존하는 일을 감소시켜 주고, 복잡한 소프트웨어를 사용 할 수 있게 간단한 인터페이스를 제공해주며 서브 시스템들 사이의 종속성을 줄일 수 있다. 퍼사드 패턴 정의(위키백과) : 퍼사드는 클래스 라이브러리 같은 어떤 소프트웨어의 다른 커다란 코드 부분..