목록Java/Grammer (16)
gambae programing
인터페이스 개발을 할 때 클래스를 처음부터 구현하게 된다면 코드의 가독성도 떨어지고 시간도 오래걸릴 것이다. 또한 팀별로 각각 다른 모듈을 만들 시 팀마다 방법이 다르기 때문에 서로 호환성이 없고 일관성이 떨어지게 된다. 인터페이스를 통해 기본적으로 구현해야 할 메소드에 대한 규격들을 알려준다면 훨씬 효율적일 것이다. 즉, 인터페이스란 특정 기능을 개발하는데 있어 공통적인 기능을 명시하고 강제적으로 구현하게끔 하는 역할이다. 인터페이스를 사용하게 된다면 자바의 다형성을 이용할 수 있고 이를 통해 유지보수성을 높일 수 있다. 인터페이스 선언 [public] interface 인터페이스 이름 {...}; 인터페이스는 객체 사용 방법을 정의한 것이므로 실행 시 데이터를 저장할 수 있는 인스턴스 또는 정적 필드..
추상 클래스 (설계 규격) 객체를 직접 생성할 수 있는 클래스를 실체 클래스, 이 클래스들의 공통적인 특성을 추출해서 선언한 클래스 추상 클래스와 실체 클래스는 상속의 관계를 가지고 있음 실체 클래스는 추상 클래스의 모든 특성을 물려받고, 추가적인 특성을 가질 수 있음 추상 클래스 선언 public abstract class 클래스 { // 필드 // 생성자 // 메소드 } new 연산자를 이용해서 객체를 만들지 못함 상속을 통해 자식 클래스만 만들 수 있음 자식 객체가 생성될 때 super()를 호출해서 추상 클래스 객체를 생성하므로 추상 클래스도 생성자가 반드시 있어야 함 추상 메소드와 재정의 [public | protected] abstract 리턴타입 메소드이름 (매개변수); 메소드의 선안만 통일..
다형성 사용 방법은 동일하지만 다양한 객체를 이용해서 다양한 실행결과가 나오도록 하는 성질 자동 타입 변환 부모타입 변수 = 자식타입; // 자동 타입 변환 , 자식 객체를 참조 - 상속 관계에 있는 클래스 사이에서 발생 - 자식은 부모 타입으로 자동 타입 변환이 가능 - 변수는 자식 객체를 참조하지만 변수로 접근 가능한 멤버는 부모 클래스 멤버로 한정★ - 부모 타입으로 자동 타입 변환된 이후에는 부모 클래스에 선언된 필드와 메소드만 접근가능 - 메소드가 자식 클래스에서 재정의 되었다면 자식 클래스의 메소드가 대신 호출 매개 변수의 다형성 매개 변수의 타입이 클래스일 경우, 해당 클래스의 객체뿐만 아니라 자식 객체까지도 매개값으로 사용 가능 강제 타입 변환 자식타입 변수 = (자식타입) 부모타입; //..
클래스 상속 프로그램에서는 자식이 부모를 선택 자식 클래스를 선언할 때 어떤 부모 클래스를 상속받을 것인지 결정하고 , 선택된 부모 클래스는 extends 뒤에 기술 여러 개의 부모 클래스를 상속할 수 없음 부모 클래스에서 private 접근 제한을 갖는 필드와 메소드는 상속 대상에서 제외됨 // 다른 package라면 public 제한자만 class 자식클래스 extends 부모클래스 { } 부모 생성자 호출 자식 객체를 생성하면, 내부적으로 부모 객체가 먼저 생성 public 자식클래스() { super(); // 부모의 기본 생성자 호출 , 매개 변수가 들어갈 수 있음 } 메소드 오버로딩 부모클래스에서 상속된 일부 메소드가 자식 클래스에서 다시 수정해서 사용할 때 사용 자식 메소드는 부모 메소드보다..
이제 사원 관리 프로그램을 mvc패턴에 맞게 수정하겠다. main클래스의 사용자에게 보여지는 부분을 제외한 기능들을 모두 controller 클래스로 옮겨준다. 1. 등록 사용자의 데이터는 main 클래스가 입력만 받을 뿐 보관은 controller에서 해줘야한다. controller 객체를 만든 뒤 메소드를 이용해 값을 넘겨준다. addList를 클릭한뒤 create method를 통해 메소드를 만들어 준다. 메소드를 통해 받은 매개변수들을 employee 객체를 만든뒤 ArrayList에 저장한다. 2. 삭제 삭제하고 싶은 사번을 입력받고 메소드를통해 controller 클래스에 전달해준다. removeEmp 메소드를 만들고 삭제 기능을 넣어준다. 4. 조회 조회는 어떠한 기능을 구현하는것이 아니라 ..
현재 사원관리 프로그램은 두 개의 Class를 가지고 있다 하지만 main 클래서에서는 출력 및 기능구현 2가지 일을 하고있다 마치 홀 알바가 주방 알바를 하는 것처럼.. 이는 유지 보수가 힘들 뿐만 아니라 코드들을 구분하기가 어렵다 좀 더 쉽고 편리하게 사용하는 방법들을 디자인 패턴이라고 하고 그 중 하나가 MVC패턴이다. MVC 프로젝트를 구성할 때 구성요소를 Model,View,Controller 3가지 역할로 구분한 패턴 Model 애플리케이션의 정보, 데이타를 나타냄 데이터베이스, 처음의 정의하는 상수, 초기화값, 변수 등을 뜻함 데이터 추출,저장,삭제,수정 등의 역할을 수행 사용자가 편집하기를 원하는 모든 데이터를 가지고 있어야 함 View나 Controller에 대해서 어떤 정보도 알지 말아..
기능(1.등록 2.삭제 3.수정 4.조회 5.휴가 6.종료) 을 구현해보자. 사용자가 입력하는 기능이 종료가 아닌 이상 계속 실행되야하므로 while문으로 기본 틀을 잡아준다. 1. 등록 사용자로부터 이름,사번,입사일,부서,직급,휴가유무,월급 데이터를 입력받는다. 입력받은 데이터 값을 사용자 정의 생성자에 매개변수로 사용해서 객체를 만들어준다. 사원들이 정보를 담을 배열이 필요한데 길이를 지정할 수 없으니 ArrayList를 만들어준 뒤 객체를 추가해준다. list라는 ArrayList는 자료형 Employee 즉,객체만 담을 수 있다 2.삭제 삭제하고 싶은 사원번호를 입력 받은 뒤 for문을 통해 ArrayList를 돌면서 객체의 사원번호와 일치하면 삭제한다. 3.수정 수정하고 싶은 사원번호와 수정 할..
사원 관리 프로그램을 만들어 보자 기능은 (1.등록 2.삭제 3.수정 4.조회 5.휴가 6.종료) 먼저 사원들의 정보를 담을 Employee 클래스를 생성 그리고 사원이 가지고 있어야할 속성 (필드) 을 선언한다. 외부에서 필드의 값을 임의로 변경하지 못하게 접근 제한자 private를 걸어준다. private를 걸어줬기 때문에 main 클래스에서 필드들의 값을 지정할 수 없어서 메소드를 만들어서 우회한 다음 값을 지정해준다. 통상정으로 값을 넣는것은 set , 값을 불러오는것은 get 메소드를 이용한다 alt + shift + s 로 getter & setter 메소드를 자동으로 불러올 수 있다. main 클래스에서 Employee 클래스의 필드에 값을 넣어주려면 setter 메소드를 사용해야 하지만 ..