1.BookClass_ex1
1. BookClass
package com.ohj.books;
public class BookClass {
String title,author,press,picture;
int price,dc_price,dc;
public BookClass() {
}
//"iOS와 안드로이드를 위한 HTML5", "로빈 닉슨", "한빛미디어", 33000, "07041351.jpg", 10
public BookClass(String t,String a,String p,int pr,String pic,int d) {
this.author =a;
this.dc=d;
this.dc_price=dc;
this.picture=pic;
this.press=p;
this.price=pr;
this.title=t;
this.dc_price=this.dcOperator(d);//반환된 할인가격을 대입
}
private int dcOperator(int dp){//할인률 계산 10,000원에서 10%할인하면 -> 10,000*(1-0.1)=9,000원
double d= dp*0.01;
return (int) (this.price*(1-d));
}
}
2.DataClass
package com.ohj.books;
import java.util.ArrayList;
public class DataClass {
//저장될 객체 타입을 예약 : <BookClass>
ArrayList<BookClass> books=new ArrayList<BookClass>();
public DataClass() {
books.add(new BookClass("DO it HTML 5 CSS 3", "고경희", "이지스퍼블리싱", 16800, "06365234.jpg", 20));
books.add(new BookClass("모던 웹 디자인을 위한 HTML5 CSS3 입문", "윤인성", "한빛미디어", 30000, "06992821.jpg", 20));
books.add(new BookClass("HTML5 CSS3와 함께하는 드림위버 CS6 무작정 따라하기", "고경희", "길벗", 24000, "07056591.jpg", 10));
books.add(new BookClass("Head First HTML5 Programming", "엘리자베스 롭슨, 에릭 프리먼", "한빛미디어", 34000, "06950729.jpg", 20));
books.add(new BookClass("만들면서 배우는 HTML5 CSS3 jQuery", "야무", "한빛미디어", 25000, "06837215.jpg", 23));
books.add(new BookClass("HTML5 CSS3", "양용석", "로드북", 25000, "06741081.jpg", 15));
books.add(new BookClass("HTML5 CSS3 WebGL로 재미있게 배우는 HTML5 게임 프로그래밍", "제이콥 세이드린", "제이펍", 30000, "06980245.jpg", 10));
books.add(new BookClass("HTML5 캔버스 완벽 가이드", "데이비드 기어리", "위키북스", 40000, "07085557.jpg", 10));
books.add(new BookClass("올인원웹실무가이드 HTML 5 CSS 3", "나인환 김은영 외 1명", "제우미디어", 28000, "06630397.jpg", 16));
books.add(new BookClass("HTML5와 CSS3로 작성하는 반응형 웹 디자인", "벤 프레인", "에이콘출판", 30000, "06983417.jpg", 20));
books.add(new BookClass("HTML5가 보이는 그림책","ANK Co Ltd", "성안당", 31500, "06992821.jpg", 21));
books.add(new BookClass("HTML5 Canvas", "스티브 펄튼, 제프 펄튼", "한빛미디어", 38000, "06806523.jpg", 20));
books.add(new BookClass("세르게이의 HTML5 CSS3 퀵 레퍼런스", "세르게이 마브로디", "제이펍", 20000, "07114432.jpg", 10));
books.add(new BookClass("이제 실전이다 HTML5 CSS3 사이트제작의 모든것", "양용석", "로드북", 25000, "06880352.jpg", 10));
books.add(new BookClass("iOS와 안드로이드를 위한 HTML5", "로빈 닉슨", "한빛미디어", 33000, "07041351.jpg", 10));
}
}
3.MethodClass
package com.ohj.books;
import java.util.ArrayList;
public class MethodClass {
public MethodClass() {//기본 생성자
}
//데이터 연산 결과 확인 메소드
public void dataTest (ArrayList<BookClass>books){
for(int i=0;i<books.size();i++){
System.out.print(books.get(i).price+"원\t");
System.out.print(books.get(i).dc+"%\t");
System.out.println(books.get(i).dc_price+"원");
}
}
//첵제목을 포함하는 검색하는 메소드
public void searchTitle(ArrayList<BookClass>books,String keyword){
for(int i=0;i<books.size();i++){
if(books.get(i).title.contains(keyword)){
System.out.println(books.get(i).title);
}
}
}
//저자를 검색하여 책 제목을 출력하는 메소드
public void searchAuthor(ArrayList<BookClass>books,String keyword){
for(int a=0;a<books.size();a++){
if(books.get(a).author.contains(keyword)){
System.out.println(books.get(a).title);
}
}
}
//출판사를 검색하여 책 제목과 저자를 출력하는 메소드
public void searchPress(ArrayList<BookClass>books,String keyword){
for(int a=0;a<books.size();a++){
if(books.get(a).press.contains(keyword)){
System.out.println("책제목 :"+books.get(a).title+"/저자 :"+books.get(a).author);
}
}
}
}
4.MainClass
package com.ohj.books;
public class MainClass {
public static void main(String[] args) {
//메인에서 각 객체를 생성하고, 각 메소드에 데이터를 전달
DataClass dc =new DataClass();
MethodClass mc= new MethodClass();
//데이터 연산 결과 확인 메소드 호출
mc.dataTest(dc.books);
//책제목을 포함하는 검색 메서드 호출
String searchTitle = "HTML";
mc.searchTitle(dc.books, searchTitle);
//책제목을 포함하는 검색 메서드 호출
String searchAuthor = "제프";
mc.searchTitle(dc.books, searchAuthor);
//책제목을 포함하는 검색 메서드 호출
String searchPress = "미디어";
mc.searchTitle(dc.books, searchPress);
////////////////////////////////////////////////////////////////
/*//출판사 검색 결과값 책 제목과 저자
String searchPress="한빛미디어";
for(int a=0;a<dc.books.size();a++){
if(dc.books.get(a).press.contains(searchPress)){
System.out.println("책제목 :"+dc.books.get(a).title+"/저자 :"+dc.books.get(a).author);
}
}*/
//////////////////////////////////////////////////////////////
/*//저자 검색 : String의 contains"검색어")
String searchAuthor="고경희";
for(int a=0;a<dc.books.size();a++){
if(dc.books.get(a).author.contains(searchAuthor)){
System.out.println(dc.books.get(a).title);
}
}*/
//////////////////////////////////////////////////////////2번
/*//책 제목 검색 : String의 contains("검색어")
//책 제목: dc.Books.get(0).title
//첵제목을 포함하는 검색 : dc.books.get(0).title.contains("검색어")
String searchTitle="HTML";
for(int i=0;i<dc.books.size();i++){
if(dc.books.get(i).title.contains(searchTitle)){
System.out.println(dc.books.get(i).title);
}
}*/
////////////////////////////////////////////////////////////1번
// 데이터 연산 결과 확인 코드
/*for(int i=0;i<dc.books.size();i++){
System.out.print(dc.books.get(i).price+"원\t");
System.out.print(dc.books.get(i).dc+"%\t");
System.out.println(dc.books.get(i).dc_price+"원");
}*/
}
}
2.BookClass_ex2
1.BookClass
package com.ohj.books;
public class BookClass {
String title,author,press,picture;
int price,dc_price,dc;
public BookClass() {
}
// 방법 2번을 위한 추가 생성자
public BookClass(String t, String a){// 방법 2를 위한 추가 생성자
this.title=t;
this.author=a;
}
//"iOS와 안드로이드를 위한 HTML5", "로빈 닉슨", "한빛미디어", 33000, "07041351.jpg", 10
public BookClass(String t,String a,String p,int pr,String pic,int d) {
this.author =a;
this.dc=d;
this.dc_price=dc;
this.picture=pic;
this.press=p;
this.price=pr;
this.title=t;
this.dc_price=this.dcOperator(d);//반환된 할인가격을 대입
}
private int dcOperator(int dp){//할인률 계산 10,000원에서 10%할인하면 -> 10,000*(1-0.1)=9,000원
double d= dp*0.01;
return (int) (this.price*(1-d));
}
}
2.DataClass
package com.ohj.books;
import java.util.ArrayList;
public class DataClass {
//저장될 객체 타입을 예약 : <BookClass>
ArrayList<BookClass> books=new ArrayList<BookClass>();
public DataClass() {
books.add(new BookClass("DO it HTML 5 CSS 3", "고경희", "이지스퍼블리싱", 16800, "06365234.jpg", 20));
books.add(new BookClass("모던 웹 디자인을 위한 HTML5 CSS3 입문", "윤인성", "한빛미디어", 30000, "06992821.jpg", 20));
books.add(new BookClass("HTML5 CSS3와 함께하는 드림위버 CS6 무작정 따라하기", "고경희", "길벗", 24000, "07056591.jpg", 10));
books.add(new BookClass("Head First HTML5 Programming", "엘리자베스 롭슨, 에릭 프리먼", "한빛미디어", 34000, "06950729.jpg", 20));
books.add(new BookClass("만들면서 배우는 HTML5 CSS3 jQuery", "야무", "한빛미디어", 25000, "06837215.jpg", 23));
books.add(new BookClass("HTML5 CSS3", "양용석", "로드북", 25000, "06741081.jpg", 15));
books.add(new BookClass("HTML5 CSS3 WebGL로 재미있게 배우는 HTML5 게임 프로그래밍", "제이콥 세이드린", "제이펍", 30000, "06980245.jpg", 10));
books.add(new BookClass("HTML5 캔버스 완벽 가이드", "데이비드 기어리", "위키북스", 40000, "07085557.jpg", 10));
books.add(new BookClass("올인원웹실무가이드 HTML 5 CSS 3", "나인환 김은영 외 1명", "제우미디어", 28000, "06630397.jpg", 16));
books.add(new BookClass("HTML5와 CSS3로 작성하는 반응형 웹 디자인", "벤 프레인", "에이콘출판", 30000, "06983417.jpg", 20));
books.add(new BookClass("HTML5가 보이는 그림책","ANK Co Ltd", "성안당", 31500, "06992821.jpg", 21));
books.add(new BookClass("HTML5 Canvas", "스티브 펄튼, 제프 펄튼", "한빛미디어", 38000, "06806523.jpg", 20));
books.add(new BookClass("세르게이의 HTML5 CSS3 퀵 레퍼런스", "세르게이 마브로디", "제이펍", 20000, "07114432.jpg", 10));
books.add(new BookClass("이제 실전이다 HTML5 CSS3 사이트제작의 모든것", "양용석", "로드북", 25000, "06880352.jpg", 10));
books.add(new BookClass("iOS와 안드로이드를 위한 HTML5", "로빈 닉슨", "한빛미디어", 33000, "07041351.jpg", 10));
}
}
3.MethodClass
package com.ohj.books;
import java.util.ArrayList;
public class MethodClass {
private DataClass dc=new DataClass(); // 이 내부에서만 쓸 수 있는 전용 데이터로 만들기 위해 private을 작성한다.
public MethodClass() { // 기본 생성자
}
//데이터 연산 결과 확인 Method
public void dataTest(){ //(ArrayList<BookClass> books) 매개변수를 제거해준다
ArrayList<BookClass> books =dc.books; //method가 호출될 때 만들어지고, 종료될때 사라지는 변수 --> 이렇게 해주면 this.dc.books.get(i).price 이런식으로 길게 작성하지 않아도 된다.
//private DataClass dc=new DataClass();를 삭제해주고 =dc.books; 에서 =new DataClass().books;로 변경(이러면 변수2개에서 하나로 줄어들게됨
for(int i=0;i<books.size();i++){ // books.size(); 에 dc.를 붙여준다.(dc라는 객체는 현재 class가 가지고있는 변수 => 빨리 찾기 위해 this. 붙인다.)
System.out.print(books.get(i).price+"원\t");
System.out.print(books.get(i).dc+"%\t");
System.out.println(books.get(i).dc_price+"원");
}
}
//1.책 제목을 포함하는 검색 method
public void searchTitle(String keyword){ //(ArrayList<BookClass> books) 매개변수를 제거해준다
ArrayList<BookClass> books = this.dc.books;//method가 호출될 때 만들어지고, 종료될때 사라지는 변수 --> 이렇게 해주면 this.dc.books.get(i).price 이런식으로 길게 작성하지 않아도 된다.
for(int i=0;i<books.size();i++){
if(books.get(i).title.contains(keyword)){//검색어를 받게 될 변수를 기입
System.out.println(keyword+"키워드가 포함된 책 제목 : "+books.get(i).title);
}
}
}
//2.저자 검색하여 저자가 작성한 책 제목 검색
public void searchAuthor(String keyword){//(ArrayList<BookClass> books) 매개변수를 제거해준다
ArrayList<BookClass> books = this.dc.books;//method가 호출될 때 만들어지고, 종료될때 사라지는 변수 --> 이렇게 해주면 this.dc.books.get(i).price 이런식으로 길게 작성하지 않아도 된다.
for(int i=0;i<books.size();i++){
if(books.get(i).author.contains(keyword)){
System.out.println(keyword+"이(가) 저자인 책 제목 : "+books.get(i).title);
}
}
}
//3.출판사 검색(책 제목과, 저자명 출력)
/*
//▼방법 1.
public ArrayList<String> searchPress(String keyword){//(ArrayList<BookClass> books) 매개변수를 제거해준다
ArrayList<BookClass> books = this.dc.books; //검색 할 전체 데이터
ArrayList<String> r=new ArrayList<String>(); //검색한 결과 저장
for(int i=0;i<books.size();i++){
if(books.get(i).press.contains(keyword)){
r.add(books.get(i).title+","+books.get(i).author);
}
}
return r;
}*/
/*
//▼방법 2.
public ArrayList<BookClass> searchPress(String keyword){
ArrayList<BookClass> books = this.dc.books; //검색 할 전체 데이터
ArrayList<BookClass> r=new ArrayList<BookClass>(); //검색한 결과 저장
for(int i=0;i<books.size();i++){
if(books.get(i).press.contains(keyword)){
r.add(new BookClass(books.get(i).title, books.get(i).author));
}
}
return r;
}*/
//▼방법 3.
public ArrayList<ResultClass> searchPress(String keyword){
ArrayList<BookClass> books = this.dc.books; //검색 할 전체 데이터
ArrayList<ResultClass> r=new ArrayList<ResultClass>(); //검색한 결과 저장
for(int i=0;i<books.size();i++){
if(books.get(i).press.contains(keyword)){
r.add(new ResultClass(books.get(i).title, books.get(i).author));
}
}
return r;
}
/*출판사를 검색하여 책 제목과 저자를 반환하는 메서드
1, 2, 3 모두 ArrayList를 사용 : 검색 결과가 각기 다르기 때문
●●방법 1 : 두 개의 문자열을 ','로 구분하여 하나의 문자열로 만드는 방법
ArrayList<String> r=new ArrayList<String>(); // <어떤 타입의혹은 어디의 데이터가 들어갈건지 선정>();
r.add(books.get(i).title+","+books.get(i).author); //r에다가 title과 author를 대입시켜준다. 이렇','로 묶어주면 하나의 문자열이 만들어 진다.
return r; //r값을 반환한다.
MainClass에서
String searchPress="길벗";
ArrayList<String> result=mc.searchPress(searchPress);
처럼 선언해준다.
for(int i=0;i<result.size();i++){
String[] s=result.get(i).split(",");
System.out.println("제목 : "+s[0]);
System.out.println("저자 : "+s[1]);
}
//위 for문으로 결과값 출력.
●●방법 2 : 두 개의 결과값을 하나의 객체에 저장 후 ArrayList에 추가(기존 클래스 활용)
ArrayList<BookClass> r=new ArrayList<BookClass>();
r.add(new BookClass(books.get(i).title, books.get(i).author)); //BookClass 객체가 생성될 때 첫번째 값과 두번째값을 전달
====>BookClass 에
public BookClass(String t, String a){ // 방법2를 위한 추가 생성자(MethodClass의 books.get(i).title가 t로 books.get(i).author 가 a로 들어가게 된다.)
this.title=t;
this.author=a;
}
를 작성해준다.
public class BookClass{
public BookClass(String t, String a){ // 방법2를 위한 추가 생성자(books.get(i).title가 t로 books.get(i).author 가 a로 들어가게 된다.)
this.title=t;
this.author=a;
}
}
이 후, MainClass 에서
ArrayList<BookClass> result=mc.searchPress(searchPress); //검색결과 출력
for(int i=0;i<result.size();i++){
System.out.println((i+1+".")+"제목 : "+result.get(i).title);
System.out.println((i+1+".")+"저자 : "+result.get(i).author);
}
위와 같이 작성해주면 동일값 출력 가능
●●방법 3 : 새로운 클래스를 설계하여 사용
ResultClass.java //ResultClass 새로 생성
public class ResultClass{
String title, author;
public ResultClass(){ //기본 생성자
}
public ResultClass(String t, String a){
this.title=t;
this.author=a;
}
}
//>>method의 return 타입 : ArrayList<ResultClass>로 변경
//>>method 내부
public ArrayList<ResultClass> searchPress(String keyword){
ArrayList<BookClass> books = this.dc.books; //검색 할 전체 데이터
ArrayList<ResultClass> r=new ArrayList<ResultClass>(); //검색한 결과 저장
for(int i=0;i<books.size();i++){
if(books.get(i).press.contains(keyword)){
r.add(new ResultClass(books.get(i).title, books.get(i).author));
}
}
return r;
}
위와같이 하고난 후
MainClass에서
ArrayList<ResultClass> result=mc.searchPress(searchPress); //검색결과 출력
for(int i=0;i<result.size();i++){
System.out.println((i+1+".")+"제목 : "+result.get(i).title);
System.out.println((i+1+".")+"저자 : "+result.get(i).author);
}
}
처럼 작성해주면 동일한 결과값 출력 가능.
*/
}
4.ResultClass
package com.ohj.books;
public class ResultClass {
String title,author;
public ResultClass() {//기본생성자
}
public ResultClass(String t, String a){
this.title=t;
this.author=a;
}
}
5.MainClass
package com.ohj.books;
import java.util.ArrayList;
public class MainClass {
public static void main(String[] args) {
//메소드에 키워드만 전달
//DataClass dc =new DataClass();
MethodClass mc= new MethodClass();
//데이터 연산 결과 확인 메소드 호출
mc.dataTest();
//책 제목을 포함하는 검색 메서드 호출
String searchTitle = "HTML";
mc.searchTitle(searchTitle);
//저자를 검색하여 책 제목을 출력하는 메소드
String searchAuthor = "제프";
mc.searchTitle(searchAuthor);//결과값 보임
/////////////////////////////////////////////////////////////////////
System.out.println("---------------------------------------");
/*//방법 3번 결과 출력
String searchPress = "미디어";
ArrayList<ResultClass> result=mc.searchPress(searchPress);
//검색 결과 출력
for(int i=0;i<result.size();i++){
System.out.print("제목 " +result.get(i).title+"\t");
System.out.println("저자"+result.get(i).author);
}*/
//////////////////////////////////////////////
System.out.println("---------------------------------------");
/*//방법 2번 결과 출력
String searchPress = "미디어";
ArrayList<BookClass> result=mc.searchPress(searchPress);
//검색 결과 출력
for(int i=0;i<result.size();i++){
System.out.print("제목 " +result.get(i).title+"\t");
System.out.println("저자"+result.get(i).author);
}*/
System.out.println("---------------------------------------");
/*//출판사를 검색하여 책 제목과 저자를 출력하는 메소드
String searchPress = "미디어";
//방법 1번 결과 출력
ArrayList<String> result=mc.searchPress(searchPress);
//검색 결과 출력
for(int i=0;i<result.size();i++){
String[] s=result.get(i).split(",");
System.out.print("제목 " +s[0]+"\t");
System.out.println("저자"+s[1]);
}*/
System.out.println("---------------------------------------");
////////////////////////////////////////////////
/*//출판사 검색 결과값 책 제목과 저자
String searchPress="한빛미디어";
for(int a=0;a<dc.books.size();a++){
if(dc.books.get(a).press.contains(searchPress)){
System.out.println("책제목 :"+dc.books.get(a).title+"/저자 :"+dc.books.get(a).author);
}
}*/
System.out.println("---------------------------------------");
//////////////////////////////////////////////////////////////
/*//저자 검색 : String의 contains"검색어")
String searchAuthor="고경희";
for(int a=0;a<dc.books.size();a++){
if(dc.books.get(a).author.contains(searchAuthor)){
System.out.println(dc.books.get(a).title);
}
}*/
System.out.println("---------------------------------------");
//////////////////////////////////////////////////////////2번
/*//책 제목 검색 : String의 contains("검색어")
//책 제목: dc.Books.get(0).title
//첵제목을 포함하는 검색 : dc.books.get(0).title.contains("검색어")
String searchTitle="HTML";
for(int i=0;i<dc.books.size();i++){
if(dc.books.get(i).title.contains(searchTitle)){
System.out.println(dc.books.get(i).title);
}
}*/
System.out.println("---------------------------------------");
////////////////////////////////////////////////////////////1번
// 데이터 연산 결과 확인 코드
/*for(int i=0;i<dc.books.size();i++){
System.out.print(dc.books.get(i).price+"원\t");
System.out.print(dc.books.get(i).dc+"%\t");
System.out.println(dc.books.get(i).dc_price+"원");
}*/
}
}
3.String
package com.ohj.string;
public class MainClass {//String에 대해 자세히 들어가기
public static void main(String[] args) {
String str1 = "Java";
//기존 문자열을 all 소문자로 반환
System.out.println(str1.toLowerCase());
//기존 문자열을 all 대문자로 반환
System.out.println(str1.toUpperCase());
//지정 문자의 index 번호를 반환
System.out.println(str1.indexOf('v'));
//지정 index의 문자를 반환
System.out.println(str1.charAt(2));
//지정된 문자열로 시작하는지 (boolean)
System.out.println(str1.startsWith("j"));
//지정된 문자열로 끝나는지(boolean)
System.out.println(str1.endsWith("a"));
//지정된 문자열을 포함하는지(boolean)
System.out.println(str1.contains("a"));
//지정된 인덱스로 부터 모두 반환
System.out.println(str1.substring(1));
//지정한 첫번째 인덱스부터 두번째 인덱스 직전까지의 문자들을 반환
System.out.println(str1.substring(1,3));
System.out.println("----------------------------");
String str2 = " Ja va ";
//문자열의 양쪽 공백을 제거
System.out.println("*"+str2.trim()+"*");
//지정된 문자로 분리하여 배열로 전환한다.
String[] s = str2.split("");
System.out.println(s.length);
//두개의 문자열 비교(boolean)
if(str1.equals(str2)){
System.out.println(true);
}
System.out.println("----------------------------");
String str3;//이렇게 선언하게 되면 String이 안에 들어가지 않기 때문에 프린트 할 수 없다.(매소드 사용불가)
System.out.println("----------------------------");
String str4 = "";
//문자열 변수의 값이 있는지(boolean)
System.out.println(str4.isEmpty());
System.out.println("----------------------------");
String str5 = null;//실행 후, null point 에러 발생
System.out.println(str5.isEmpty());
}
}
2.String2
1.DataClass
import java.util.ArrayList;
public class DataClass {
ArrayList<NewsClass> newsList=new ArrayList<NewsClass>();
public DataClass(){
String str="[지디넷코리아]"+
"IT서비스 '빅3'가 기존 소프트웨어(SW)개발방식에 웹기술이 확산될 것이란 공통 전망을 내놨다. 삼성SDS, LG CNS, SK C&C 모두 자체 기술과 해외 오픈소스 및 상용 솔루션을 접목해 향후 늘어날 것으로 보이는 프로젝트 수요에 대응할 뜻을 밝혔다."+
"15일 업계에 따르면 3사가 맡고 있는 프로젝트에 센차터치와 ExtJS, 제이쿼리(jQuery)와 제이쿼리모바일, 티타늄과 폰갭과 앱스프레소 등 이미 상용화된 개발프레임워크가 일부 도입됐거나 관련 문의가 다수 들어온 것으로 확인됐다."+
"SK C&C는 티타늄, 폰갭, 앱스프레소는 국내시장서 역할이 크지 않지만 중국서 사전영업 지원시 고객들로부터 관심을 받고 있는 기술들이라고 묘사했다. 무료버전 모바일 애플리케이션(이하 '앱') 개발환경으로 지금처럼 모바일웹과 앱개발 환경이 발전하고 시장 성숙도가 높아지는 시기에 그 활용이 늘 거란 전망이다. "+
"삼성SDS는 티타늄, 폰갭, 앱스프레소같은 '하이브리드프레임워크'가 도입비용 감소, 운영 효율화를 요구하는 시장 상황에서 발생한다고 설명했다. 단일 소스코드로 여러 단말기를 지원시 장점이 있다는 분석이다. 현재 윈도가 정복한 PC와 달리 모바일에는 iOS와 안드로이드 등 여러 운영체제(OS)가 존재한다는 이유에서다. "+
"LG CNS는 상용솔루션인 센차터치와 오픈소스인 제이쿼리모바일이 현재 모바일시장에서 가장 대표적인 HTML5 자바스크립트 프레임워크라고 평했다. 2가지 기술에 장단점이 있어 프로젝트 상황에 따라 선택적으로 활용하게 된다고 덧붙였다. 어도비의 폰갭은 하이브리드앱 개발 프레임워크에 속하며 역시 종종 도입된다고 언급했다."+
"■모바일오피스-스마트워크로 기업시장에 확산되는 웹기술 "+
"하이브리드앱 개발기술과 UI프레임워크는 HTML5 표준과 자바스크립트같은 웹기술로 SW를 만들 수 있게 해주는 도구지만 현업에서는 용도가 구별된다. "+
"우선 제이쿼리와 센차터치 등 UI프레임워크는 SW사용자가 접하는 단말기 표시화면과 반응체계 등 UI 개발을 간편케 해주는 용도다. 개인 개발자와 중소규모 앱개발사가 모바일앱을 만들면서 여러 단말기에 맞춰 UI를 개발할 수 있게 돕는 기술로 쓰이기 시작했다. "+
"국내 기업시장으로의 도입이 표면화된 건 최근이다. 지난해부터 미래웹기술연구소는 센차와 손잡고 그 기술 공인교육을 진행중이다. 모바일솔루션업체 인크로스도 제이쿼리파운데이션과 손잡고 제이쿼리 개발자 생태계 확산에 나서며 연계된 웹앱개발 솔루션 '다빈치스튜디오'도 선보였다. 전문 기술인력과 잘 정비된 툴을 요구하는 시장수요에 대응하는 차원으로 이해된다."+
"그리고 하이브리드앱 기술은 상이한 단말 운영체제(OS)나 단말 플랫폼 등에 한 번에 대응하는 SW개발을 지원한다. 어도비가 폰갭을, KTH가 앱스프레소를 들고 저변확대에 나섰다. "+
"하이브리드앱 기술은 지난 2011년부터 관심을 모은 모바일 전사 앱플랫폼(MEAP)이라 불리는 기업용 솔루션의 장점과 일부 겹치는 것처럼 비치기도 한다. 하지만 실제로 2가지 기술은 상호보완적이다. MEAP 솔루션에는 전통적인 애플리케이션수명주기(ALM) 관점의 역할이 더 크게 요구된다. 기업내 SW개발조직이 모바일앱 개발을 기존 솔루션 지원처럼 체계적으로 맡을 때 쓰이는 것이다."+
"■같은 듯 다른 하이브리드앱 개발 대응전략 "+
"당장 하이브리드앱 개발 기술의 실사용이 아주 많은 상황이라고 단정하긴 어려울 수도 있다. 기술 수요에 대해 3사가 인지하는 온도차를 보인다. 하지만 새해 HTML5와 자바스크립트 기술을 활용하는 웹기반 프레임워크 도입이 산업계 프로젝트에 늘어날 것이란 전망은 맥을 같이 한다. 자체 MEAP 솔루션과 외부 하이브리드앱 개발기술의 접목을 시도하는 노력도 진행형이다. "+
"SK C&C는 고객들의 문의가운데 자사 '넥스코어모바일플랫폼(NMP)'과의 호환성 측면에 대한 질문이 적잖다고 밝혔다. 실제 도입환경에선 NMP의 라이브러리와 오픈소스 기술 혼용사례가 많고 개발조직내 경험에 따라서 상용 솔루션도 쓰인다고 설명했다. 향후 오픈소스 활용이 늘고 곧 데스크톱 웹앱 영역에서도 HTML5 프레임워크 활용이 주류를 형성할 것이라고 전망했다. "+
"삼성SDS도 이런 기술 도입은 일시적 현상이 아니라 더 늘어난다는 예상을 내놨다. 모바일 환경에서 여전히 제조사별 OS와 플랫폼간 특성차 때문이다. 향후 윈도폰 등 신규OS를 채택한 단말기 출시도 줄을 이을 전망이고 같은 안드로이드OS도 제조사별 구동환경이 조금씩 다른 상황이라는 근거를 들었다. 다만 자체 기술개발이나 향후 대응계획은 구체적으로 언급하지 않았다."+
"LG CNS 진단은 비교적 구체적이다. 그에 따르면 HTML5가 표준화될 때까지 향후 2~3년간 하이브리드앱 개발 프레임워크에 대한 수요가 이어지다, 일부 사라지는 기술도 나타난다. 업계엔 순수하게 HTML5를 지원하는 프레임워크만 남는다. 회사는 이에 대비해 오픈소스와 상용솔루션 활용과 더불어 자체 UI플랫폼 '디브온M스크린'과 하이브리드앱 플랫폼 'MXP'솔루션 개발에 주력했다고 밝혔다."+
"개인 개발자와 중소규모 벤처업체들의 웹기술 활용이 주로 B2C 시장을 겨냥한 모바일 플랫폼 대응에 그쳤다면, 이같은 주요 IT서비스업체들의 전략은 그 주 고객층인 대규모 조직들의 PC기반의 전통적 업무환경과 만나는 스마트폰, 태블릿간의 연계성 요구에 따른 것으로 이해된다."+
"모바일과 노트북 및 데스크톱을 넘나드는 환경에서 다양한 사용자 환경과 단말기 특성차를 최소화하는 해법으로 웹표준 기술과 그 활용을 도와주는 개발플랫폼의 중요성이 점차 강조될 전망이다. 업계에 따르면 삼성SDS와 LG CNS가 사용중인 센차터치와 ExtJS 유료 버전이 마이크로소프트(MS) 윈도폰과 삼성 타이젠을 지원할 가능성도 있는 것으로 알려졌다."+
"Copyright ⓒ 2012 CBS Interactive Inc.";
newsList.add(new NewsClass(str));//arratList에 추가가 되어있음 NewsClass n에 저장된 것을 가져온다.
}
}
2.NewsClass
public class NewsClass {
String news;
public NewsClass() {
}
public NewsClass(String n) {
this.news=n;
}
}
//1.데이터 클래스 객체를 만들어 놓는다 (dc.newsList.get.(0).news) 데이터클래스에 들어있는 뉴스리스트에서 0번방에서 get꺼내서 뉴스를 연다
3.MainClass
import java.util.ArrayList;
public class MainClass {//String에 대해 자세히 들어가
public static void main(String[] args) {
/* 문제 1. 위의 str 데이터 중 "HTML5"과 "하이브리드앱"라는 단어가 몇번 노출되는 지
노출 횟수를 resultNum이라는 배열명으로 저장하여 출력
1.검색키워드 변수에 저장 String keyword1="HTML5";
String keyword2="하이브리드앱";
2.전체 데이터를 띄어쓰기("")기준으로 분리
String[] split = dc.newsList.get(0).news.split("");
2-1. dc: DataClass dc = new DataClass()'
2-2. newClass : ArrayList<NewsClass> newList = new ArratList<NewsList>();
2-3. get(0) : ArrayList 내의 데이터를 추출하는 메소드(현재 add()된 객체가 1개이므로)
2-4 news: NewsClass 객체의 멤버 변수(즉 실제 기사인 문자열로 저장)
2-5. split("") : 전체 기사에 단어들이 띄어쓰기로 구분 되어 있으므로
2-6 String[] split = : String 의 split()는 반환 형태가 String 배열이므로
3. 키워드를 찾을 때마다 1씩 증가 시킬 배열 선언,키워드가 두 개이므로 배열의 크기(길이)를 두개로 설정 단 1씩 증가해야하므로 초기값을 0으로 설정
resultNum[0]:"HTML5"을 찾을 때마다 1씩증가(resultNum[0]++)==(resultNum[0]=resultNum[0]+1;)
resultNum[1]:"하이브리드앱"을 찾을 때마다 1씩증가
int[] resultNum={0,0};
4.분리괸 단어들과 키워드를 비교검색
for(int i=0;i<Spilit.length;i++{
if(split[i].contains(keyword1)){//"HTML5"
resultNum[0]++;
}
}
for(int i=0;i<Spilit.length;i++{
if(split[i].contains(keyword2)){//"하이브리드앱"
resultNum[1]++;
}
}
5.검색결과 출력
syso(keyword1+":"+resultNum[0]);
syso(keyword2+":"+resultNum[1]);*/
DataClass dc= new DataClass();
String keyword1="HTML5";
String keyword2="하이브리드앱";
String[] split = dc.newsList.get(0).news.split(" ");
int[] resultNum=new int[2];
resultNum[0]=0;
resultNum[1]=0;
//int[] resultNum={0,0};
for(int i=0;i<split.length;i++){
if(split[i].contains(keyword1)){//"HTML5"
resultNum[0]++;
}
if(split[i].contains(keyword2)){//"HTML5"
resultNum[1]++;
}
}
System.out.println(keyword1+":"+resultNum[0]);
System.out.println(keyword2+":"+resultNum[1]);
//문제 2. 위의 str 데이터를 모두 역순(space기준)으로
// resultStr 변수저장하여 출력
//오름차순 내림차순 할때 이것을 쓴다.
String[] resultStr = new String[split.length];
int index = split.length-1;
for(int i=0;i<resultStr.length;i++){
resultStr[i]=split[index];
index--;
}
//역순 출력
for(int i=0;i<resultStr.length;i++){
System.out.println(resultStr[i]);
}
}
}
':: IT > JAVA' 카테고리의 다른 글
20200108~9 [JAVA] extend, 상속, 접근제한자, 오버라이드 (0) | 2020.03.28 |
---|---|
이클립스 스킨테마 변경 (0) | 2020.03.25 |
20200106 JAVA arraylist 배열 (0) | 2020.03.23 |
20200103 JAVA (ArrayList, split, Integer.parseInt, remove) (0) | 2020.03.22 |
20200102 JAVA Class(클래스, 메소드 기초, 배열) (0) | 2020.03.22 |