Java, 객체지향 질문드립니다.

newbboy의 이미지

제가 요즘 Java를 배우고 있습니다, 물론 학교에서 가르쳐 주는것들을요..

여태까지 프로그래밍 언어 배워본거로는...주입식 교육의 폐해로 Visual Basic ... 그것도
정보처리기능사 자격증 딸때 한 소스로 쪼금씩 바꾸면서 하는것....이랑
C언어정도인데요..

비베는 거의 모른다고 해야 정상이고.. C언어는 프로페셔날 하진 않고 그냥 남들 하는
만큼..은 합니다. 구조체 포인터 어려워 하는것도 물론이구요..

그런데 객체지향 프로그래밍인 자바를 하려니 도저히 머리가 돌아가지 않습니다.
제가 절차지향인 C를 자바보다 더 오래 해와서 그런건지... 이상하게 함수별로 돌아가는
그런 구조들이 설명을 들어도 이해가 가지 않습니다.

막상 문제를 풀게되면 대충 프로그램 로직정도는 이해가 가니까 풀수는 있습니다...
오픈 북으로 소스 짜라고 하면 짜깁기로도 다 만들수 있습니다...

중요한 것은 책을 덮고 문제가 제시되면.. 그냥 Stop됩니다. 어떻게 해야할지
판단이 흐려집니다... 제가 Java라는 언어, 객체지향 프로그래밍을 좀 더 잘 할 수
있으려면 어느정도의 개념이 필요한지 또 어떻게 배워야 올바르게 공부할 수 있을지
한 말씀 부탁드립니다.

brucewang의 이미지

처음엔 다 그렇게 막막한 겁니다.

"새로운 것을 배우는" 것에 대한 자신의 스타일은 어떻다고 생각하시나요?
책으로시작하시나요, 책보다는 직접 해보면서 터득하시나요.
책을 보신다면 딱딱하지만 모든 내용이 집약되고 정리된 원론서부터 여러번 정독하시나요, 아니면 궁금한 것이 있을 때마다 그때 그때 찾아서 읽으시나요, 아니면 쉬운 개념서부터 시작을 하시나요?

Java의 객체 지향은 결국 design pattern으로 중간 매듭이 지어지는데, 선호하시는 스타일에 따라 고수님들께서 밑의 댓글로 좋은 책들을 추천해 주실겁니다. ^^
(kldp 명예의 전당에도 좋은 책을 추천하는 article이 하나 보이던데..)

여담으로 '알고리즘'과 '디자인'이 소프트웨어 개발의 중요 축 이라고 할 때, 둘다 specialist이기는 힘든 것 같더군요. 아무래도 한쪽에 더 치우치게 되거나, 둘다 알지만 generalist인 경우가 대부분이 아닐까요?

객체지향 개념이야 곧 잘 아시게 될테니, 혹시나 막연한 두려움을 갖고 계시다면 그런 것 털어 내시라고, 노파심에서 말씀 드렸습니다. 말씀하신 자신의 장점, 더욱 살리세요.

-------------------------------------------------
$yes 4 8 15 16 23 42

-------------------------------------------------
$yes 4 8 15 16 23 42

newbboy의 이미지

사실 알고리즘 구현하는것도 그리 대단하지도 않은 부분이라서요..
뭐 학교에서 간단하게 배우는 기초적인것에 국한되어있으니...

새로 배우는 것들은 책으로 일단 한번 정독을 하고 실제 써보면서 궁금한점을
책으로 찾아보고있기는합니다.. 학교에서 주는 워크북은 내용도 대충이고
예제도 너무 간단간단한데 설명도 없는것이라 참 난감합니다.

당장에 학교 수업만이라도 잘 따라갈 정도의 feel만 있으면 될것 같은데 그 Feel을
찾는게 너무나도 잘 다가서지지가 않더라구요ㅠ

brucewang의 이미지

보이는것이 없을때는 상상의 나래를 펴시면 좋습니다.....

저는 전산 수업은 들어 본 적이 없는 비전산과 출신 s/w engineer인데, 지금껏 이 일로 먹고 사는것을 보면 그런 연습이 어느정도는 도움이 되었나봅니다.

하물며 정식으로 필요한 모든것을 배우고 계시는데... 그중에서 모든것을 다 완벽히 아셔야만 행복한것은 아니지 않을까.. 하는 생각을 잠시 해 봅니다. ^^

참 신기하게도 이세상은 자신이 노력한 것에 대해 누군가 어디선가에서는 꼭 필요하게 되어 있는것 같습니다.

-------------------------------------------------
$yes 4 8 15 16 23 42

-------------------------------------------------
$yes 4 8 15 16 23 42

newbboy의 이미지

C를 배우면서 알고리즘을 배운 탓인지,
어떻게 짜면 될것 같다는 느낌은 있는데 마땅히 어떤 함수를 써야 하는지,
어떻게 소스를 짜야지 생각이 안드는건 아직 자바 소스에 대해서 이해를 하지
못한 탓일까요?..

brucewang의 이미지

밑에 댓글을 읽어보니 아직 고등학생이신가 보군요.

그러면 빨리 시작하시는 편 아닌가요? 지금부터 걱정하실 필요는 없지 않을까 싶네요.
책을 보시면서, 혹은 간단한 아이디어들을 직접 그 언어로 구현해 보시다보면 그런 의문들은 자연스럽게 해결 됩니다. 자신을 믿고 조금 더 시간을 투자 해 보십시오. (혹시 다른 것들은 책 한번 보면 다 이해가 되었는데 이번에는 조금 시간이 걸려서 조급해 하시는건 아닌지... 머리 좋으신 분들이 그런 괜한 걱정을 자주 하시던데.. ^^)

고교시절에는 수학이 더 중요하지 않을까요? 제가 고교때 수학을 너무 못했기때문에 그만큼 더 필요성을 절감하고 있습니다... ToT 수학이랑 음악 잘하시는분들이 전 너무 부러워요.

-------------------------------------------------
$yes 4 8 15 16 23 42

-------------------------------------------------
$yes 4 8 15 16 23 42

newbboy의 이미지

단지 프로페셔녈한 것보다 학교 수업이라도 좀 따라갈수 있게 이해하면 되긴하는데..
이상하게 잘 안되네요ㅠㅠ 말씀대로.. 다른것들은 대충 이해가 금방가는데 자바는 이해하는데
조금 오래 걸려서요... 휴 수학공부는 열심히 하고 있습니다만, 지금 수업이 잘 안따라가지는게
답답해서..

pizza1977의 이미지

사실 따로 있는게 아닙니다. 제 경우 나름 많은 양의 서적을 읽었습니다만
'아 이거구나!' 이렇게 느낌이 오는 책은 없더군요. 물론 능력 부족이였습니다.

급하게 생각하지 말고 언어와 페러다임 관련 서적을 많이 읽어 보세요.

한...2년 정도 하다보면 느낌이 옵니다.(머리나쁜 제 기준으로...)

포탈이는 불사신

-------------
포탈이는 불사신

newbboy의 이미지

2년 씩이나 해야하는건가요...................

그닥 중요한 과목은 아니지만 공학과에서는 요즘 자바가 기본이라서 또
안배울수도 없더라구요;;;

codepage의 이미지

객체의 개념과 특징부터 확실히 아셔야 개념이 잡히실 겁니다.
그리고 JAVA가 익숙해지시고 나면 그 편리함과 확장성 때문에
다른 언어들을 멀리하실까 염려가 되는군요.

newbboy의 이미지

객체에 대해서 다시 좀 더 공부를 해보아야겠네요;;
지금은 그냥 학교에서 가르쳐 주는 기본만 하는거라 크게 다른언어를 멀리할 염려까지는
안하고 있습니다^^ 워낙 새로운 언어를 접하는것에 대해서도 흥미가 많아서요~

semmal의 이미지

OOP는 Smalltalk를 공부하시면 알기 싫어도 알게됩니다.

Java로만 Object를 알려면 제대로 몇 년은 노력하셔야 할 것 같네요.

그리고, 그렇지 않은 경우도 있지만 Java나 C++같은 언어자체의 문제때문에 생겨난 잔기술(디자인 패턴이라고 부르지요)은 나중에 보시는 것이 좋습니다.

지금은 잔기술보다는 개념을 익히는게 더 중요하니까요.
------------------------------
How many legs does a dog have?

------------------------------
How many legs does a dog have?

newbboy의 이미지

지금은 간단한 학교 수업 정도인데 어디 까지 공부를 해봐야할지...

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.