본문 바로가기
반응형

전체 글135

JSP 자바 빈즈(Beans) JSP는 HTML내에 JAVA코드를 넣어 동적인 페이지를 생성하는 스크립트 언어이다. JSP 자바 빈즈는 JSP의 표준 액션 태그로 접근할 수 있는 자바 클래스로서 값을 가지는 속성(멤버변수)와 값을 설정하는 메소드(setter), 값을 추출하는 메소드(getter)로 이루어져있다. JSP 자바빈즈 개발 규약 패키지화 JSP 페이지에서 자바빈즈를 사용할 때 기본 패키지에 있으면 인식이 안된다. 반드시 패키지화 되어 있어야 한다 기본 생성자 존재 자바빈즈의 객체 생성은 jsp:useBean 액션 태그로 생성하는데, 객체가 생성될 때 기본 생성자를 이용하기 때문에 반드시 기본 생성자가 있어야 한다. 멤버변수의 접근자는 private으로 선언 자바빈즈 객체의 속성 값은 외부에서 직접 접근할 수 없도록 priv.. 2023. 3. 17.
인터페이스 극단적으로 동일한 목적 하에 동일한 기능을 수행하게끔 강제하는 것 자바의 다형성을 극대화하여 개발코드 수정을 줄이고 프로그램 유지보수성을 높이기 위해 사용함. 인터페이스는 interface키워드를 통해 선언할 수 있으며, implements키워드를 통해 일반 클래스에서 인터페이스를 구현할 수 있다. JAVA8 이전까지는 상수, 추상메소드만 선언이 가능했지만 (그만큼 강제성이 강했다) JAVA8부터는 디폴트메소드, 정적 메소드가 추가되었다. public interface 인터페이스명 { //상수 타입 상수명 = 값; //추상메소드 타입메소드명(매개변수,...); //디폴트메소드 default 타입 메소드명(매개변수,....){ // 구현부 } //정적메소드 static 타입 메소드명(매개변수) { //구현.. 2023. 3. 14.
업캐스팅과 다운캐스팅 형 변환(업캐스팅) 상위 클래스로 변수를 선언하고 하위 클래스의 생성자로 인스턴스를 생성 상속 관계에서 모든 하위 클래스는 상위 클래스로 형 변환(업캐스팅)이 됨 (그 역은 성립하지 않음) 형 변환과 메모리 Customer vc = new VIPCustomer(); VIPCustomer()생성자에 의해 VIPCustomer클래스의 모든 멤버 변수에 대한 메모리는 생성되었지만, 변수의 타입이 Customer이므로 실제 접근 가능한 변수나 메서드는 Customer의 변수와 메서드이다. 다운캐스팅 업캐스팅된 클래스를 다시 원래의 타입으로 형 변환 하위 클래스로의 형 변환은 명시적으로 해야 함 if ( customerE instanceof GoldCustomer ) { GoldCustomer vc = (Gold.. 2023. 3. 14.
상속 클래스 상속 새로운 클래스를 정의할 때 이미 구현된 클래스를 상속받아서 속성이나 기능을 확장하여 클래스를 구현함 이미 구현된 클래스보다 더 구체적인 기능을 가진 클래스를구현해야 할 때 기존 클래스를 상속 class B extends A { } extends키워드 뒤에는 단 하나의 클래스만 올 수 있다! 자바는 단일 상속(single inheritance) 만을 지원함 상속을 구현하는 경우 상위 클래스는 하위 클래스보다 더 일반적인 개념과 기능을 가짐 하위 클래스는 상위 클래스 보다 더 구체적인 개념과 기능을 가짐 하위 클래스가 상위 클래스의 속성과 기능을 확장한다는 의미 사람 < 포유류 class Mammal{ } class Human extends Mammal{ } super 키워드 하위클래스에서 가지.. 2023. 3. 14.
배열(array) - 자료를 순차적으로 한꺼번에 관리하는 방법 배열이란? 동일한 자료형(데이터 타입)의 순차적 자료 구조 인덱스 연산자[]를 이용하여 빠른 참조가 가능 물리적 위치와 논리적 위치가 동일 배열의 순서는 0부터 시작 자바에서는 객체 배열을 구현한 ArrayList를 많이 활용함. int [] arr1 = new int[10]; int arr2 [] = new int[10]; 배열의 길이와 요소의 개수는 동일하지 않습니다. 배열을 선언하면 개수만큼 메모리가 할당되지만, 실제 요소(데이터)가 없는 경우도 있음 length속성은 배열의 개수를 반환해주기 때문에 요소의 개수와 다를 수 있다. 동일하지 않을 경우 요소의 개수에 대한 count변수를 따로 넣어야한다. 향상된 for문 사용하기 / for(변수:배열){} public class CharArrayTes.. 2023. 3. 14.
디자인 패턴 1. 싱글톤 패턴(singleton pattern) 프로그램에서 인스턴스가 단 한 개만 생성되어야 하는 경우 사용하는 디자인 패턴 static 변수, 메서드를 활용하여 구현할 수 있음 어떠한 클래스(객체)가 유일하게 1개만 존재할 때 사용 주로 서로 자원을 공유할 때 사용, 실물 세계에서는 프린터가 해당 (여러 대의 pc가 하나의 복사기를 사용하는 경우) 실제 프로그래밍에서는 tcp socket 통신에서 서버와 연결된 connect 객체에 주로 사용 (socket 하나로 多연결) 기본 생성자를 private로 막고 getInstance()를 제공 싱글톤 패턴으로 회사 객체 구현하기 생성자는 private으로 선언 외부에서 Company를 만들지 못하도록 함 private Company() {} 클래스 내.. 2023. 3. 14.
여러 인스턴스에서 공통으로 사용하는 변수를 선언하자 - static변수 공통으로 사용하는 변수가 필요한 경우 여러 인스턴스가 공유하는 기준 값이 필요한 경우 학생마다 새로운 학번 생성 카드회사에서 카드를 새로 발급할때마다 새로운 카드 번호를 부여 회사에 사원이 입사할때마다 새로운 사번이 필요한 경우 static 변수 선언과 사용하기 static int serialNum; 인스턴스가 생성될 때 만들어지는 변수가 아닌, 처음 프로그램이 메모리에 로딩될 때 메모리를 할당 클래스변수, 정적 변수라고도 함 인스턴스 생성과 상관 없이 사용 가능하므로 클래스 이름으로 직접 참조 ex) Student.serialNum = 100; static 변수 테스트하기 public class Employee { private static int serialNum = 1000; private int .. 2023. 3. 14.
객체 자신을 가리키는 this this가 하는 일 인스턴스 자신의 메모리를 가리킴 생성자에서 또 다른 생성자를 호출할 때 사용 자신의 주소(참조값)을 반환 함 생성된 인스턴스 메모리의 주소를 가짐 클래스 내에서 참조변수가 가지는 주소값과 동일한 주소값을 가지는 키워드 생성자에서 다른 생성자를 호출하는 this 클래스에 생성자가 여러개인 경우, this를 이용하여 생성자에서 다른 생성자를 호출할 수 있음 public class Person { String name; int age; public Person() { this("이름없음",1); } Public Person(String name, int age) { this.name = name; this.age = age; } } 자신의 주소를 반환하는 this public class P.. 2023. 3. 14.
StringBuffer StringBuffer은 문자열을 추가하거나 변경할 때 주로 사용하는 자료형이다. 1. append append라는 메소드를 이용해서 계속해서 문자열을 추가해나갈 수 있다. toString() 메소드를 이용하면 String 자료형으로 변경할 수 있다. public class Test { public static void main(String[] args) { StringBuffer sb = new StringBuffer(); sb.append("hello"); sb.append(" "); sb.append("jump to java"); System.out.println(sb.toString()); } } 결과 : hello jump to java StringBuffer 자료형은 String 자료형보다 무.. 2023. 3. 14.
캡슐화(encapsulation) 정보 은닉을 활용한 캡슐화 외부에서 필요한 메소드 한두개만 오픈해서 나머지는 자동으로 생성될 수 있도록 사용할 수 있음. 외부에 꼭 필요한 정보만 오픈. 대부분의 멤버 변수와 메서드를 감추고 외부에 통합된 인터페이스만 제공하여 일관된 기능을 구현하게 함. 각각의 메서드나 멤버 변수를 접근함으로써 발생하는 오류를 최소화할 수 있다. public class MakeReport { StringBuffer buffer = new StringBuffer(); private String line = "======"; private String title = "이름 \\t 주소 \\t\\t 전화번호 \\n"; private void makeHeader() { buffer.append(line); buffer.appe.. 2023. 3. 14.
반응형