본문 바로가기

java공부

[객체지향프로그래밍] static 응용 - 싱글톤 패턴(singleton pattern) 📌 싱글톤 패턴이란? 프로그램에서 인스턴스가 단 한 개만 생성되어야 하는 경우 사용하는 디자인 패턴 static 변수, 메서드를 활용하여 구현할 수 있음 📌 싱글톤 패턴으로 회사 객체 구현하기 생성자는 private 으로 선언 private Company() {} 클래스 내부에 유일한 private 인스턴스 생성 private static Company instance = new Company(); 외부에서 유일한 인스턴스를 참조할 수 있는 public 메서드 제공 public static Company getInstance() { if(instance == null ) { instance = new Company(); } return instance; } 🍀 CompanyTest.java publi.. 더보기
[객체지향프로그래밍] 12_ static 응용 - 싱글톤 패턴(singleton pattern) 📌 싱글톤 패턴이란? 프로그램에서 인스턴스가 단 한 개만 생성되어야 하는 경우 사용하는 디자인 패턴 static 변수, 메서드를 활용하여 구현 할 수 있음 📌 싱글톤 패턴으로 회사 객체 구현하기 생성자는 private 으로 선언 private Company() {} 클래스 내부에 유일한 private 인스턴스 생성 private static Company instance = new Company(); 외부에서 유일한 인스턴스를 참조할 수 있는 public 메서드 제공 public static Company getInstance() { if(instance == null) { instance = new Company(); } return instance; } 🍀 CompanyTest.java public .. 더보기
[객체지향프로그래밍]11_static 변수 📌 공통으로 사용하는 변수가 필요한 경우 여러 인스턴스가 공유하는 기준 값이 필요한 경우 학생마다 새로운 학번 생성 카드회사에서 카드를 새로 발급할때마다 새로운 카드 번호를 부여 회사에 사원이 입사할 때마다 새로운 사번이 필요한 경우 📌 static 변수 선언과 사용하기 static int serialNum; 인스턴스가 생성될 때 만들어지는 변수가 아닌, 처음 프로그램이 메모리에 로딩될 때 메모리를 할당 클래스 변수, 정적변수 라고도 함 (vs. 인스턴스 변수) 인스턴스 생성과 상관없이 사용 가능하므로 클래스 이름으로 직접 참조 Student.serialNum = 100; 📌 static 변수 테스트하기 🍀 Emplyee.java public class Emplyee { public static int .. 더보기
[객체지향프로그래밍]10_객체 간의 협력 (collaboration) 📌 객체 지향 프로그래밍에서의 협력 객체 지향 프로그램에서 객체 간에는 협력이 이루어짐 협력을 위해서는 필요한 메시지를 전송하고 이를 처리하는 기능이 구현되어야 함 매개 변수로 객체가 전달되는 경우가 발생 객체 협력의 예 James 와 Tomas 는 각각 버스와 지하털을 타고 학교에 간다. James 는 5000원을 가지고 있었고, 100번 버스를 타면서 1000원을 지불한다. Tomas 는 10000원을 가지고 있었고, 초록색 지하철을 타면서 1200원을 지불한다. 두 학생이 버스와 지하처를 타는 상황을 구현해보자. 🍀 Student.java public class Student { String studentName; int grade; int money; public Student(String stu.. 더보기
[객체지향프로그래밍]09_객체 자신을 가리키는 this 객체 자신을 가리키는 this 인스턴스 자신의 메모리를 가리킴 생성자에서 또 다른 생성자를 호출 할 때 사용 자신의 주소(참조값)을 반환 함 📌 생성된 인스턴스 메모리의 주소를 가짐 클래스 내에서 참조변수가 가지는 주소값과 동일한 주소값을 가지는 키워드 public void setYear(int year) { this.year = year; } 📌 생성자에서 다른 생성자를 호출하는 this 클래스에 생성자가 여러 개인 경우, this 를 이용하여 생성자에서 다른 생성자를 호출할 수 있음 생성자에서 다른 생성자를 호출하는 경우, 인스턴스의 생성이 완전하지 않은 상태이므로 this() statement 이전에 다른 statement를 쓸 수 없음 예제 ) 생성자 2개를 만들어보자 public class Pe.. 더보기
[객체지향프로그래밍]08_캡슐화(encapsulation) 📌 캡슐화 (encapsulation) 정보 은닉을 활용한 캡슐화 꼭 필요한 정보와 기능만 외부에 오픈함 대부분의 멤버 변수와 메서드를 감추고 외부에 통합된 인터페이스만을 제공하여 일관된 기능을 구현하게 함 각각의 메서드나 멤버 변수를 접근함으로써 발생하는 오류를 최소화 한다. ex) 레포트 만들기 예제 🍀 MakeReport.java public class MakeReport { StringBuffer buffer = new StringBuffer(); private String line = "----------------------------------------\n"; private String title = "이름 \t 주소 \t\t 전화번호 \n"; private void makeHeader().. 더보기
[객체지향프로그래밍]07_접근 제어 지시자(access modifier) , 정보은닉(infomation hiding) 📌 접근 제어 지시자 (access modifier) 클래스 외부에서 클래스의 멤버 변수, 메서드, 생성자를 사용할 수 있는지 여부를 지정하는 키워드 private : 같은 클래스 내부에서만 접근 가능 (외부 클래스, 상속 관계의 클래스에서도 접근 불가) default (아무것도 없음) : 같은 패키지 내부에서만 접근 가능 (상속 관계라도 패키지가 다르면 접근 불가) protected : 같은 패키지나 상속관계의 클래스에서 접근 가능하고 그외 외부에서는 접근 할 수 없음 public : 클래스의 외부 어디서나 접근 할 수 있음 📌 get() / set() 메서드 private 으로 선언된 멤버 변수 (필드)에 대해 접근, 수정할 수 있는 메서드를 public 으로 제공 get() 메서드만 제공 되는 경우.. 더보기
[객체지향프로그래밍]06_참조 자료형 변수 📌 참조 자료형 변수의 자료형 ▪ 기본 자료형 : int, long. float, double 등 ▪ 참조 자료형 : String, Date, Student 등 클래스형으로 변수를 선언 기본 자료형은 사용하는 메모리의 크기가 정해져 있지만, 참조 자료형은 클래스에 따라 다름 참조자료형을 사용할 때는 해당 변수에 대해 생성해야 함 ▪ (String 클래스는 예외적으로 생성하지 않고 사용할 수 있음) 📌 참조 자료형 정의하여 사용하기 학생이 수강한 과목들에 대한 성적을 산출하기 위한 경우 학생 클래스 속성에 과목이 모두 있으면 불합리 학생(Student)과 과목(Subject)에 대한 클래스를 분리하여 사용하고 Subject 클래스를 활용하여 수강한 과목들의 변수의 타입으로 선언 선언된 Subject 변수는.. 더보기
[객체지향프로그래밍]05_생성자 (constructor), 오버로딩(overloading) 📌 생성자 (constructor) 생성자 기본 문법 {[ 더보기
[객체지향프로그래밍] 04 _ 인스턴스 생성과 힙 메모리 (heap memory) ■ 인스턴스 (instance) 클래스는 객체의 속성을 정의하고, 기능을 구현하여 만들어 놓은 코드 상태 실제 클래스 기반으로 생성된 객체(인스턴스)는 각각 다른 멤버 변수 값을 가지게 됨 가령, 학생의 클래스에서 생성된 각각의 인스턴스는 각각 다른 이름, 학번, 학년들의 값을 가지게 됨 new 키워드를 사용하여 인스턴스 생성 ■ 힙 메모리 생성된 인스턴스는 동적 메모리(heap memory)에 할당됨 C나 C++ 언어에서는 사용한 동적 메모리를 프로그래머가 해제 시켜야 함 ( free() 나 delete 이용) 자바에서는 garbage collector 가 주기적으로 사용하지 않는 메모리를 수거 하나의 클래스로부터 여러 개의 인스턴스가 생성되고 각각 다른 메모리 주소를 가지게 됨 ■ 참조 변수, 참조 .. 더보기

반응형