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

+ Recent posts