스타크래프트 예제로 알아보는 Java 추상(abstract) 클래스와 인터페이스(interface)의 개념

추상클래스는 주로 다형성의 개념을 살리기 위해서 사용된다. 실제로 개발을 하면서 추상클래스나 인터페이스를 사용하면서 개발을 해 본 경험은없다. 추상클래스나 인터페이스를 개발에 사용하려면 설계에 많은 시간을 투자해야 된다고 한다. 이말은 추상클래스나 인터페이스를 굳이 사용하지 않아도 된다는 말이다. 하지만 그래도 궁금해서 공부하는 차원에서 알아보았다. 스타크래프트의 모든 개체들은 유닛(Unit)이라는 개념을 가진다. 공통적으로 스타크래프트의 유닛들은 이동, 취소(나 홀드), 공격(라바 등 제외)의 동작들을 할 수 있다. 따라서 추상클래스는 말 그대로 공통적인 부분을 최대한 뽑아서 상위개념으로 만들어 주는 역할을 한다. 그리고 인터페이스는 각각의 클래스들의 성질을 나누는 역할을 한다. Mechanic이라는 인터페이스를 implements 한 클래스들은 scv가 수리를 할 수 있도록 하는 성질을 가지게 한다. public class InterfaceEX { public static void main(String[] args) { SeizeTank tank = new SeizeTank(); ScienceVessle vessle = new ScienceVessle(); NoSteamMarine marine = new NoSteamMarine(); print(tank); print(vessle); print(marine); ScienceVessle v1 = new ScienceVessle(); ScienceVessle v2 = new ScienceVessle(); ScienceVessle v3 = new ScienceVessle(); NoSteamMarine m1 = new NoSteamMarine(); NoSteamMarine m2 = new NoSteamMarine(); SeizeTank t1 = new SeizeTank(); SeizeTank t2 = new ...

대학생 코딩 과제 대행 java, python, oracle 세 번째

이미지
https://open.kakao.com/o/s3aMpbA 이번에는 python 2. 버전으로 hello를 입력하면 -> 안녕하세요. 가 출력가능한 프로그램을 만드는 과제를 의뢰받았다. while(True):     print("간단한 영단어를 한국말로 번역해 드립니다.")     print("종료를 원하실 경우 q를 입력하세요.")     s = raw_input("번역하실 단어를 입력하세요 : ")     tf =False;     if(s=="q"):         break;     else:               dictionary = {"hello":"안녕하세요","apple":"사과","banana":"바나나",                       "car":"자동차","man":"남자","love":"사랑",                       "i love you":"나는 당신을 사랑합니다"}         for k in dictionary.keys():             if(k==s):                 tf=True;                 print("====================")       ...

대학생 코딩 과제 대행 java, python, oracle 두 번째

이미지
https://open.kakao.com/o/s3aMpbA 이번에는 저번과제와는 다르게 python 과제가 들어왔다. default로 설치된 파이선 폴더의 README.txt의 Copyright (c) 다음부분의 년도 숫자들의 합을 출력하는 파이썬 코드를 작성하세요. 아래는 README.txt 의 경로입니다. C:\Python27\README.txt or C:\Python34\README.txt 위에 요구사항처럼 파이썬을 설치하면 README.txt 텍스트 파일이 있는데, 조건에 해당하는 줄을 읽어서 년도들을 다 더하는 코드를 짜면 되는거였다. python3.5로 짰다. # -*- coding: UTF-8 -*- import re strline ="" with open('C:\Python35\README.txt','r') as f:     for line in f.readlines():         if("Copyright (c)"in line):             strline+=line[14:]         if("2012" in line):             strline+=line print(strline) stre = re.compile('[a-zA-Z]|,|\.') alphaBet = stre.findall(strline) for i in alphaBet:     strline = strline.replace(i,'') strline = strline.replace('-',' ') print(strline) strline = strline.split() print(strline) hap = 0; for i in range(0,len(strl...

대학생 코딩 과제 대행 java, python , oracle 첫 번째

이미지
https://open.kakao.com/o/s3aMpbA 심심해서 그리고 여러가지 문제들을 접해보기 위해서 카톡 공개채팅방을 대학생 java , python 코딩 대행 해준다는 제목으로 열었었다. 첫번째 과제 두번째 과제는 텍스트로 받았다. 사진으로 보기 불편해서 텍스트 파일로 달라고했다. ---------------------------------------------------------- 20점 만점 + 보너스 2점 과제입니다. 보너스 점수는 과제를 만점 받은 경우에만 부여합니다. 옵션1 또는 옵션2를 수행했음을 첨부글에 적는 경우, 각 1점의 추가 보너스 점수를 부여합니다.(첨부글에 적지 않으면 보너스 점수 없음) ---------------------------------------------------------- 다음과 같이 정수 리스트를 관리하는 MyList 클래스를 작성하고 사용하는 프로그램을 작성하시오. - MyList 클래스를 다음과 같이 정의(lab0_7의 MyList에 아래 ***** 부분을 추가하면 됨) 속성(private 인스턴스 변수): ? 정수형 배열 변수 ? 저장 용량 ? 배열에 저장된 정수 갯수를 나타내는 변수(배열 크기가 아니라 자료 갯수) 기능(public 메소드): ? 생성자(constructor) - 비어있는 MyList를 생성함. 즉, 속성을 다음과 같이 초기화한다. ??크기가 10인 정수 배열을 생성하여 배열 변수 속성을 초기화 ??저장 용량을 10으로 초기화 ??저장된 정수 갯수를 0으로 초기화 ??add - 정수값을 매개변수로 받아 배열에 저장 ??저장은 입력 순서대로 배열 앞부분부터 채운다. ??print - 리스트 전체를 한 줄에 출력 ??(출력 형식은 자유이나, 가능하면 아래 실행 예와 같은 형식으로 출력해 볼 것) ?***** lab0_7에 추가할 메소드 ***** ??get - 인덱스를 매개변수로 받아 배열의 인덱스 위치 원소를 리턴 ? set - ...

Java 학생관리 프로그램

import java.awt.print.Book; import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.Scanner; public class StudentManage { public static void main(String[] args) { // TODO Auto-generated method stub OperateStudentManage operateStudentManage = new OperateStudentManage(); operateStudentManage.main(); } } class OperateStudentManage { Scanner sc = new Scanner(System.in); ArrayList<Student> list = new ArrayList<Student>(); public void main() { do { menuprint(); String input = sc.next(); if (input.equals("q")) { break; } if (input.equals("1")) { makeStudent(); } if (input.equals("2")) { printAllStudentInfo(); } if (input.equals("3")) { searchByName(); } if (input.equals("4")) { deleteByName(); } if (input.equals("5")) { updateByNam...

카카오 코딩테스트 문제1 Java, Python

이미지
오늘 프로그래머스에서 카카오 블라인드 채용 테스트를 했다. 저는 굉장히 허접이라서 경험삼아 도전해 보았는데, 문제1번만 풀었다.. 문제는 총 7문제이고 언어는 C++, Java, Python, JavaScript, Swift 이렇게 5개로 풀 수있다. 그래서 총 7 x 5 = 35 문제라고 할 수 있다. 문제1번을 Java랑 Python 2가지 언어로 풀었는데, 1시간 30분 걸렸다... 총 5시간 300분 중에 90분을 썼는데, 2가지 언어로 풀고 나니까 현자타임(?)이 와서 그만 두었다. 그래서 제가 java,python으로 푼 1번 문제 코드만 블로깅 해볼려고 합니다. 1번문제는 아래와 같아요. 이거를 그대로 써도 될지 잘모르겠는데,, 저작권같은거에 걸릴까봐 겁나긴 하는데 그냥 올려봅니다. 출처 : < https://programmers.co.kr/tryouts/1255/challenges/4412?language=java >  문제 설명 비밀지도 네오는 평소 프로도가 비상금을 숨겨놓는 장소를 알려줄 비밀지도를 손에 넣었다. 그런데 이 비밀지도는 숫자로 암호화되어 있어 위치를 확인하기 위해서는 암호를 해독해야 한다. 다행히 지도 암호를 해독할 방법을 적어놓은 메모도 함께 발견했다. 지도는 한 변의 길이가   n 인 정사각형 배열 형태로, 각 칸은 "공백"(" ") 또는 "벽"("#") 두 종류로 이루어져 있다. 전체 지도는 두 장의 지도를 겹쳐서 얻을 수 있다. 각각 "지도 1"과 "지도 2"라고 하자. 지도 1 또는 지도 2 중 어느 하나라도 벽인 부분은 전체 지도에서도 벽이다. 지도 1과 지도 2에서 모두 공백인 부분은 전체 지도에서도 공백이다. "지도 1"과 "지도 2"는 각각 정수 배열로 암호화되어 있다. 암호화된 배열은...

Java로 별 그리기

이미지