728x90
반응형
project | package | class | 변수 | |||||||||
method | Main Method | Method Overloading | ||||||||||
Method | ||||||||||||
import(다른 클래스 호출시) | Constructor | 기본Constructor | Constructor Overloading | |||||||||
기타Constructor | ||||||||||||
초기화블럭 |
instance -
static - 컴파일
싱글톤 - 1회성이지만 database. 프로그램 실행~끝날때까지.
싱글톤패턴(Singleton Pattern) |
||
: 반드시 객체를 한 개만 생성하도록 강제적으로 제한하는 패턴 | ||
<조건> 1. 반드시 static키워드가 붙은 자료형이 내 자신의 클래스인 속성 하나가 선언되어야 한다. |
package two; public class Student { private int hakno; private Student(){} public static Student getInstance(){ if(stu=null) stu = new Student(); return stu; } public void setHakno(int hakno){ this.hakno=hakno; } public int getHakno {return hakno;} } |
|
2. 반드시 생성자들의 접근제어자가 private으로 처리 되어야 한다. 싱글톤패턴에 맞게끔 외부에서 객체생성을 못하도록 접근 제한. |
package one; public class Ex01 { public static void main(String[] args) { Student st1 = Student.getInstance(); //&100 Student st2 = Student.getInstance(); //&100 } } |
|
3. 반드시 1번의 필드를 반환해주는 public static이 붙은 geter method가 존재해야한다. | public static void getIns(){ if(stu=null) stu = new Student(); return new Student(); } |
|
Company.java
package singleton; public class Company { // private static Company instance = new Company (); private static Company instance; private Company () {} public static Company getInstance() { if(instance==null) { instance = new Company(); } return instance; } }
package singleton; public class CompanyTest { public static void main(String[] args) { Company myCompany1 = Company.getInstance(); Company myCompany2 = Company.getInstance(); System.out.println( myCompany1 == myCompany2 ); } }
true
변수들의 생명주기
변수들의 생명주기 | ||
탄생 | 죽음 | |
local 변수 | 지역변수가 선언된 시점 | 지역변수가 포함된 메소드나 생성자의 명령이 종료된 후 |
instance변수 | 객체가 선언된 시점 | 인스턴스가 소멸되는 시점 |
class Ex { int a ; public void md(){ this.a a= a; } public int getmd(){ return a; } } |
class ExMain{ public static void main(String[] args){ Ex e = new Ex(); e.a = a; } } |
|
static(=class, 정적) | 클래스가 메모리에 올라가는 시점 (=프로그램이 실행되는 시점) |
프로그램이 종료되는 시점 |
통합 모델링언어 UML(Unifed Modeling Language)
: 개발자가 필요한 요소들 정리, 요소들의 관계 정의, 요소들간의 흐름들을 도식화할때 사용하는 다이어그램
[접근제어자][기타제어자]자료형 변수명;
+ public final {readOnly}
# protected static___
~ default
- private
클래스 다이어그램 |
||||
: 클래스, 인터페이스, 추상클래스들 안에 필요한 속성, 기능 정리, 조건정리, 해당 요소들 간의 관계정리 | ||||
기술 순서 | 코드 | 다이어그램 | ||
클래스명 | 스테레오타입기술 : 추상클래스명, 인터페이스명 | class Ex | <<interface>> Ex |
|
속성 | 변수 상수 객체 |
접근제어자기호 속성명 : 자료형 {옵션} static 나타내는 밑줄 |
public final int MAX = 5; private static String str; |
+ MAX : int {readOnly} - str : String |
기능 | 메소드 | 접근제어기호 메소드명(매개변수명 : 자료형, ...) : 리턴타입 | protected void setMd( int a) (...;) | # setMd ( a : int )_ void |
생성자 | 접근제어자 생성자명(매개변수명 : 자료형, ...) | public Ex(int a) (...;) | + Ex ( a : int ) | |
초기화블럭 | later |
다이어그램 접근제어자 기호 |
|
접근제어자 | |
public | + |
protected | # |
default | ~ 또는 명시안함 |
private | - |
기타제어자 | |
final | { readOnly } |
static | ___텍스트 언더바 |
abstract | 스테레오 타입시 <<abstract>> |
Method인 경우 {abstract} | |
연관(멤버필드) | ─ 단순연결 → 영향주는지 ex)Ca c = new Ca(); |
의존(매개변수) | …―ː ex) public void setP(Pa p) c.setP(pp); …→ |
집합(종속) : 약하게 연결된 관계 |
◇─ ◇→ |
합성(독립) : 기존 연결을 끊더라도 남아이는것 |
◆─ ◆→ |
상속(확장) 상속(실체화) |
자식 ──▶부모 자식 …─▷ <<interface Pa>> +smd() : void{abstract} |
시퀀스 다이어그램
: 요소들이 어떻게 흐르는지의 절차를 정리
코드 | 다이어그램 |
class Ex{ int a ; public final int B = 5; private static int c; public void setA(int a) { this.a =a; } protected int getA() { return a ;} public Ex() {} } |
+EX |
~ a : int + B : int {readOnly} - c : int |
|
+ setA( a : int ) : void # getA( ) : int + Ex( ) |
다이어그램 만들기
package three; //import two.Student; class Student { private String name; //멤버변수 //private 동일 클래스안 private int id; //멤버변수 private int age; //멤버변수 public Student() {} //기본생성자 public Student(String name, int id, int age) { //기타생성자 this.name = name; //지역변수 this.id = id; //지역변수 this.age = age; //지역변수 } public void setName(String name) {this.name = name;} //메소드 public void setId(int id) {this.id = id;} //메소드 public void setAge(int age) {this.age=age;} //메소드 public String getName() {return name;} //메소드 public int getId() {return id;} //메소드 public int getAge() {return age;} //메소드 } public class School { public static void main(String[] args) { //메인메소드 Student stu = new Student(); stu.setName("홍길동"); stu.setId(2017313297); stu.setAge(20); System.out.println("이름 : " + stu.getName()); System.out.println("학번 : " + stu.getId()); System.out.println("나이 : " + stu.getAge()); Student s1 = new Student("마이콜", 220302005, 25); Student s2 = new Student("고길동", 200302001, 41); Student[] sarr = new Student[2]; //sarr length=2 배열선언 sarr[0] = s1; //0인덱스 값 s1주소값 선언 sarr[1] = s2; //1인덱스 값 s2주소값 선언 System.out.printf("%s, %d, %d\n", sarr[0].getName(),sarr[0].getId(), sarr[0].getAge()); System.out.println(sarr[1].getName() + ", " + sarr[1].getId() + ", " + sarr[1].getAge()); } }
<< class >>
Student- name : String
- id : int
- age : int+ Student ( )
+ Student ( name : String, id : int, age : int )
+ setName ( name : String ) : void
+ setName ( id : int ) : void
+ setName ( age : int ) : void
+ getName ( ) : String
+ getId ( ) : int
+ getAge ( ) : int
728x90
반응형
'[JAVA]' 카테고리의 다른 글
[11일차 오전] 아스테리스크 (0) | 2023.12.26 |
---|---|
[20231222] 10일차 오후 (0) | 2023.12.22 |
[20231221] 9일차 오후 (0) | 2023.12.22 |
[20231221] 9일차 오전 (0) | 2023.12.21 |
[20231220] 8일차 오후 (0) | 2023.12.20 |