Language
-
[JAVA/디자인패턴] 싱글톤 패턴(singleton pattern)Language/Java 2021. 6. 3. 18:44
싱글톤 패턴(singleton pattern) 프로그램에서 인스턴스가 단 한 개만 생성되어야 하는 경우 사용하는 디자인 패턴 static 변수, 메서드를 활용하여 구현할 수 있다. 싱글톤 패턴 구현 생성자는 private로 선언 private School( ) { } 클래스 내부에 유일한 private 인스턴스 생성 private static School instance = new School( ) 외부에서 유일한 인스턴스를 참조할 수 있는 public 메서드 제공 public class School { private static School instance = new School(); //클래스 내부의 단 하나의 인스턴스 생성 private School() { } public static School ..
-
[JAVA] static 변수와 메서드Language/Java 2021. 6. 3. 18:01
static 변수 공통으로 사용하는 변수가 필요한 경우 선언 여러 인스턴스가 공유하는 기준 값이 필요한 경우 => 학생마다 새로운 학번 생성, 카드를 발급받을 때 마다 새로운 카드 번호 생성... static 변수 선언 인스턴스가 생성될 때 만들어지는 변수가 아닌, 처음 프로그램이 메모리에 로딩될 때 메모리를 할당 클래스 변수, 정적 변수라고 한다. 인스턴스 생성과 상관없이 사용가능하므로 클래스 이름으로 직접 참조 => Student.serialNumber = 100; static 메서드(method) static 메서드는 인스턴스 생성과 무관하게 클래스 이름으로 호출될 수 있다. 인스턴스 생성 전에 호출 될 수 있으므로 static 메서드 내부에서는 인스턴스 변수를 사용할 수 없다. static 메서드..
-
[JAVA] 접근 제어 지시자와 캡슐화(encapsulation)Language/Java 2021. 6. 3. 14:08
접근 제어 지시자(access modifier) 클래스 외부에서 클래스의 멤버 변수, 메서드, 생성자를 사용할 수 있는지 여부를 지정하는 키워드 private: 같은 클래스 내부에서만 접근 가능(외부 클래스, 상속 관계의 클래스에서도 접근 불가) default: 같은 패키지 내부에서만 접근 가능(상속 관계라도 패키지가 다를 경우 접근 불가) protected: 같은 패키지나 상속관계의 클래스에서 접근 가능, 그 외의 경우 접근 불가 public: 클래스의 외부 어디서나 접근 할 수 있다. get( ) / set( ) 메서드(method) private로 선언된 멤버 변수에 대해 접근, 수정할 수 있는 메서드를 public으로 제공 get메소드의 경우 읽기 전용이고, set메소드의 경우 객체의 속성을 변경..
-
[JAVA] 생성자(constructor)와 오버로딩(overloading)Language/Java 2021. 6. 3. 12:02
생성자(constructor) 객체를 생성할 때 new키워드와 함께 사용한다. => new Student( ) 생성자능 일반 함수와 같이 기능을 호출하는 것이 아닌, 객체를 생성할때 new와 함께 호출된다. 객체가 생성될 때 변수, 상수를 초기화 하거나 다른 초기화 기능을 수행하는 메서드를 호출한다. 생성자는 반환 값이 없고, 클래스의 이름과 동일하다. 대부분의 생성자는 외부에서 접근이 가능하지만, 특정 목적이 있는 경우 private로 선언되는 경우가 있다. 기본 생성자 클래스에는 반드시 하나 이상의 생성자가 존재 => 생성자를 구현하지 않을 경우, 컴파일러에서 자동으로 생성자 코드를 넣어준다. 기본 생성자는 매개변수와 구현부가 없다. new키워드와 함께 호출을 할 수 있다. 생성자 구현방법 컴파일러가..
-
[JAVA] 인스턴스와 힙 메모리(heap memory)Language/Java 2021. 6. 2. 23:59
인스턴스(instance) 클래스는 객체의 속성을 정의하고, 기능을 구현하여 만들어 놓은 코드 상태 클래스 기반으로 생성된 객체는 각각 다른 멤버 변수 값을 가지게 된다. new 키워드를 사용하여 객체 인스턴스 생성 힙 메모리(heap memory) 생성된 인스턴스는 힙 메모리에 할당된다. JAVA에서는 C, C++과 달리 자원 해제를 시켜주지 않아도 된다. => Gabage Collector가 주기적으로 메모리 수거 하나의 클래스로 부터 여러개의 인스턴스가 생성되고 각각 다른 메모리 주소를 갖게된다. 용어 정리 객체: 객체 지향 프로그램의 대상, 생성된 인스턴스 클래스: 객체를 프로그래밍 하기 위해 코드로 정의해 놓은 상태 인스턴스: new 키워드를 사용하여 클래스를 메모리에 생성한 상태 멤버 변수: ..
-
[JAVA] 함수(function)Language/Java 2021. 6. 2. 23:09
함수(function) 하나의 기능을 수행하는 코드 정의된 함수는 호출하여 사용 -> 함수의 기능이 끝나면 제어가 반환 함수는 여러 곳에 동일한 방식으로 호출 가능 함수 예시 함수는 이름, 매개 변수, 반환 값, 함수 몸체로 구성된다. 함수 호출과 스택 메모리 스택 메모리: 함수가 호출될 때 지역 변수들이 사용하는 메모리 함수의 수행이 끝나면 자동으로 반환되는 메모리 메서드(method) 객체의 기능을 구현하기 위해 클래스 내부에 구현되는 함수 메서드를 구현함으로써 객체의 기능이 구현된다. 메서드의 이름은 객체를 사용하는 기능에 맞게 짓는것이 좋다.
-
[JAVA] 클래스(Class)Language/Java 2021. 6. 2. 22:51
클래스(Class) 클래스는 객체의 청사진(blueprint) 객체의 속성은 클래스의 멤버 변수로 선언 변수의 데이터타입으로 클래스를 사용할 수 있다. => String name = "Ann" Student 클래스 예시 => 학생에 필요한 속성을 멤버 변수로 선언한다. 객체 지향 프로그램 구현 방법 객체를 정의 -> 객체가 제공하는 기능을 구현 -> 객체가 제공하는 기능들 간 소통을 통해 협력을 구현 클래스 명명기법 클래스의 이름을 지정할 때 대문자를 시작문자로 작성하는 것이 좋고 두 단어 이상일 경우 단어의 첫 글자를 대문자로 표기한다. => Student(단어가 1개일 경우), StudentInfo(단어가 2개일 경우) Java파일 하나에 여러 개의 클래스가 존재할 수 있으나, public클래스는 하..
-
[JAVA] 객체 지향 프로그래밍Language/Java 2021. 6. 2. 22:29
객체(Object) 구체적, 추상적 데이터의 단위(학생, 회원, 생산..) 여러가지 명사(물체), 동작 => 객체 객체 지향 프로그래밍과 절차지향 프로그래밍 절차 지향 프로그래밍 => 시간이나 사건의 흐름을 따른 프로그래밍(순서대로 사건이 처리됨) 객체 지향 프로그래밍 => 객체와 객체 사이 관계를 갖고 프로그래밍을 수행 객체 지향 프로그램 구현 방법 객체를 정의 -> 객체가 제공하는 기능을 구현 -> 객체가 제공하는 기능들 간 소통을 통해 협력을 구현