기본 콘텐츠로 건너뛰기

11월, 2020의 게시물 표시

Part4 객체지향 프로그래밍의 기법(12장 ~ 15장)

API : 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 한 인터페이스 String API concat(추가할 문자열) : 문자열을 연결할 때 charAt(위치) : 문자열 중에서 특정한 위치의 글자를 가져오고 싶을 때 String.valueOf() : 모든 기본 자료형을 모두 문자열로 변경 spilit() : 문자열을 특정 토큰으로 분리 문자열과 배열 String str = "한글은" ; char [] arr1 = str. toCharArray (); System. out . println (Arrays. toString (arr1)); Java의 성능 튜닝의 기본 String 대신 StringBuffer/StringBuilder를 이용, String은 immutable이라서 새로 만들어야 하지만 StringBuffer와 StringBuilder은 mutable이 이므로 변경가능함 StringBuilder를 써야 하는 경우 : 루프를 돌면서 문자열의 내용이 계속해서 변경되는 경우, '+'혹은 '+='와 같은 연산이 빈번하고 자주 사용되는 메소드인 경우, if ~ else에 의한 연산에 의해 문자열이 완성되는 경우(주로 SQL 문이나 명령어) 시간 관련 API  System.currentTimeMillis() : 현재 시각 Calendar 함수 선언 방법 2가지 Calendar cal1 = Calendar. getInstance (); Calendar cal2 = new GregorianCalendar(); 데이터를 얻을 때는 get() - 월(month)는 0부터 시작하므로 월-1로 나옴 int year = cal1. get (Calendar. YEAR ); int month = cal1. get (Calendar. MONTH ); int date = cal1. get (Calendar. DATE ); 데이터를 변경할 때는 set() cal2. set (Calendar. YEAR , 2020 ); ca

메이븐으로 라이브러리 인식

 간혹 퍼블릭 jar가 아닌 파일이 있는데 그럴때 쓰면 될듯 <dependency> <groupId> SimpleCryptLib </groupId> <artifactId> SimpleCryptLib </artifactId> <version> 1.1.0 </version> <scope> system </scope> <systemPath> ${basedir}/src/main/webapp/WEB-INF/lib/SimpleCryptLib-1.1.0.jar </systemPath> </dependency> version, scope, systemPath는 꼭 작성해야 한다 groupId, artifactId, version은 암거나 해도 되는거 같음 최근(2021.05.04)스프링 부트    < dependency > < groupId > NiceID </ groupId > < artifactId > NiceID </ artifactId > < version > 1.0 </ version > < scope > system </ scope > < systemPath > ${basedir}/src/main/resources/lib/NiceID.jar </ systemPath > </ dependency > 이걸 추가해주는것도 필요할지도..?? < build > < plugins > < plugin > < groupId > org.springframework.boot </ groupId > < artifactId > spring-boot-maven-plugi

네이버페이 리뷰 API 연동

네이버 페이 리뷰 API 네이버 측에 문의 하면 sandbox용 인증키를 받습니다. AccessLicense, SecretKey 그리고 받은 파일의 4. WSDL을 열어 주시고 Naver_Pay_API_MallService41_WSDL(sandbox)_20140925파일 압축 풀어주세요 그럼 파일이 BaseType.xsd, CheckoutAPI.wsdl, MallServiceMessage.xsd 세개의 파일이 나옵니다. 네이버페이 리뷰 리스트 가져오는 메소드는 getPurchaseReviewList입니다. BaseType.xsd를 켜신 후 MallID로 검색하면 <xs:complexType name="purchaseReview"> 안쪽의 MallID밑에  <xs:element minOccurs="0" name="PurchaseReviewClassType" type="xs:string"/> 추가해주세요 포토 리뷰를 가져오는 파라미터 값을 보내기 위해서 입니다. <xs:element minOccurs="0" name="Content" type="xs:string"/> 이값도 필요합니다 이미지 경로를 가져오기 위해서 입니다. <xs:complexType name="purchaseReview">     <xs:sequence>       <xs:element minOccurs="0" name="CreateYmdt" type="xs:dateTime"/>       <xs:element minOccurs="0" name="MallID" type="xs:string"/>   <xs:element minOccurs="0" nam

Part3 객체지향 프로그래밍의 기법(10장 ~ 11장)

상속 : 특정 클래스를 구성할 때 기존 클래스의 데이터(속성)와 메소드를 상위(부모) 클래스에서 그대로 물려받아서 중복적인 코드를 줄인다는 장점과, 하나의 변수 타입으로 여러 종류의 객체를 의미하는 추상화 된 방식의 프로그램이 가능하게 하는 객체지향 기법  부모 클래스(Super 클래스) 자식 클래스(Sub 클래스) extends : 상속을 사용하는 문법 WheelMouse m = new Mouse(); 휠마우스의 휠 기능의 정의를 못하므로 에러인가봄 public class MouseTest { public static void main (String[] args){ System. out . println ( "------------" ); Mouse op = new OpticalMouse(); op. clickLeft (); op. clickRight (); } } 결과  --------------------- 광센서로 왼쪽 클릭 광센서로 오른쪽 클릭 실행되는 메소드는 실제 객체의 메소드가 호출 - 변수의 타입이 무엇이든 간에 실제로 움직이는 것은 리모컨(레퍼런스)에 연결된 객체  - 컴파일러는 변수 타입으로 선언된 클래스에 해당하는 메소드가 있는지만 확인  - 실제로 움직이는 것은 연결된 객체  - 만일 실제 객체에 해당 메소드가 없다면 부모 클래스의 정보를 추적해서 실행 오버라이드 : 자식 클랙스에서 부모 클래스의 메소드를 다시 정의 super : 부모 클래스를 부르는 키워드, 부모 클래스에 정의된 생성자를 사용(this로 자식에서 재정의 가능) 다형성 : 상속을 사용하여 하나의 변수 타입으로 여러 가지 종류의 객체를 가리킬 수 있어서 기존 코드를 고치지 않고도 처리할 수 있는 부분이 많아짐 상속의 장점 - 변수의 타입과 실제 객체가 일치하지 않아도 됨, 부모 타입으로 파라미터, 배열을 선언가능 생성자.... 추상 클래스 : 변수의 타입으로만 의미가 있고, 객체로 생성될 가능성이 없는 것은