목록Project (23)
우주코딩

App 아키텍쳐 App -- 저장 --> List (게시글, 회원, 프로젝트, 작업) List는 메모리이다. (RAM) 파일은 외부저장장치이다 (HDD) List -- 저장 --> 파일 파일(게시글, 회원, 프로젝트, 작업) -- 로딩 --> List App을 종료하더라도 Data를 유지할 수 있다. ------------------------------------------------------- 자바 스트리밍 API -File -FileInputStream -FileOutputStream Date I/O Stream API 주요 클래스 File = 파일, 디렉토리 정보 다루기 FileInputStream = 파일에서 데이터 읽어오는 역할 FileOutputStream = 파일로 데이터를 출력하는 역할..
제네릭 11-c 제네릭 적용 void add(Object value){ // 특정 객체만 추가하도록 제한할 수 없다. } Object get(){ // 매번 리턴값을 원래 타입으로 형변환 해야한다. // 형변환 하기 번거롭다 } 제네릭 문법 class List { void add(E value); E get(); // E = 타입 파라미터 // 객체를 생성할 때 E 자리에 들어갈 타입이 결정된다. } 타입 정보를 받는 타입 파라미터의 이름은 일반 변수이름을 짓는 규칙과 같다. 그러나 타입을 지정하는 자리에 와야하기 때문에 한 두 자의 알파벳으로 이름을 짓는다. 눈에 띄게 하기위해서 대문자를 사용한다. 자바에서 제안하는 이름이 있고 대부분의 개발자가 그 이름을 사용한다. T - type E - elemen..
유스케이스 액터가 시스템을 통해 달성하려는 업무 목표 유스케이스명 = 업무명으로 이름을 짓는다. 구매하기, 주문하기... etc 유스케이스 관계 포함관계 (include) = 필수작업 회원가입 include 주소검색 주소 검색이 필수이기 때문에 해당 작업을 건너뛰고 회원가입을 진행할 수 없다 확장관계(extend) = 선택작업 회원가입 extend 사진등록 사진등록은 회원가입을 확장한다 사진등록을 건너뛰고 회원가입 작업을 완료할 수 있다. 확장점 (extension point) 에서 작업을 수행할지 선택한다. 프로젝트 추상메서드밖에 없을경우에 인터페이스로 전환하는 것이 유지보수에 좋다 상속해줄 필드도 없고 구현해야할 메서드만 제공할 때 같을 타입으로 묶으면서 구현 규칙을 정하는 경우 인터페이스 문법을 적..
프로젝트 - composite 디자인 패턴 컴포지트 패턴 : 객체들의 관계를 트리구조로 구성하여 부분-전체 계층을 표현하는 패턴이다. 08- a 사용자가 직접 명령어를 입력하는 대신에 메뉴를 통해 명령을 실행하도록 변경 composite 패턴 적용 전 composite 디자인 패턴의 용도와 실행 원리를 이해한다. 08- b composite 패턴 적용 후 tree 구조를 갖는 객체를 다룰 때 유용한 설계구도 'component' 역할을 정의한다. 직접 사용할 클래스가 아니기 때문에, 추상클래스로 정의 execute(): 서브 클래스에서 재정의해야하기 때문에, 추상 메서드로 선언 'composite' 역할을 정의한다. MenuGroup 클래스 추가 execute() 구현: 메뉴를 출력하고 사용자로부터 번호..
클래스 문법의 용도 서로 관련된 일을 하는 메서드들을 관리하기 쉽게 한 클래스에 모아두는 것 => 역할에 따라 메서드 분류 복합 데이터를 저장하는 메모리를 설계 => 사용자 정의 데이터타입 만들 때 (user-defined data type) 클래스 문법을 이용하여 메서드를 분류하기 관리하기 쉽게하기 위해 분류 04-a promptString promptInt promptDate 를 Prompt 클래스로 묶기 메서드의 이름을 inputString inputInt inputDate로 바꾼다. addTask() listTasks() 를 TaskHandler 클래스로 묶는다. addProject() listProjects() 를 ProjectHandler addMember() listMembers() 를 Me..
메서드(method) = 함수 (function) static 은 static 변수끼리 쓸 수 있다 메서드 -명령어(소스코드)를 관리하기 쉽게 기능 단위로 묶어놓은 블럭 int plus(int a,b) { int sum = a + b; return sum; } [메서드 정의 (method definition)] plus - 메서드 명 a,b - 파라미터(parameter) int - 리턴 타입 {} - 메서드 몸체 (method body) int result = plus(100,200); [메서드 호출(method call)] plus - 메서드 명 100,200 = 아규먼트 (argument); result - 리턴값을 받을 변수 메서드 문법 [리턴값의 타입] 함수명(파라미터선언, ...) {명령어들}..
매서드는 코드를 기능 단위로 묶을 때 사용하는 문법이다. 프로그램의 크기가 크지 않으면 바로 위에서 밑으로 실행한다. 코드가 길어지면 관리가 힘들다. 낱개로 펼쳐놓지 말고 기능 단위로 묶는다 -> 함수, 즉 매서드 pms를 통한 메서드 활용 addMember로 회원정보 입력을 분리한다. 매서드 정의 및 회원등록 코드 가져오기 =>main()과 addMember() 가 서로 공유하는 변수는 클래스 변수로 만든다. 클래스 변수와 로컬 변수 class X { static int c = 300; static void m1(){ int a = 100; //로컬변수 } static void m2(){ int b =200; //로컬변수 } } 다른 메서드의 로컬변수는 아예 접근 불가 a,b는 서로 다른 main에서 ..