The present perfect refers to an unspecified time, whereas the simple past refers to a specific time. Now, when using the simple past you need not state the specific time the event took place. That's the beauty of the simple past. Specific time is housed in that tense form. Similarly, the beauty of the present perfect is that it doesn't refer to a specific time, which works well when you want to ask someone a question or tell someone information about yourself that doesn't make specific reference to an exact time. For example,
 Have you read this book?
In other words, was the book read? The speaker is interested in a thing, the reading of the book, not time, i.e., when the book was read, or for that matter, if the book was finished is not important.
Answer: Yes. I've read it. (Perfect: when you read it is not important)
Answer: Yes. I read it. (Simple: It's finished and done with)
 Did you read this book?
In other words, was the book finished? The speaker is interested in the event.
Answer: Yes. I read it.
 Have you done your homework?
When you did it is unimportant. It's the thing, doing homework, that's important. Whether you finished it or not is another matter.
 Did you do your homework?
Did you finish it?
 "I have done it" (The when is not important. The task is what's important.)
 "I did it" (The task and its completion are important.)
 "Have you ever thought of wearing contact lenses?"
This is a polite way of asking a question. The reason being, the present prefect leaves time open. The beginning and the end of the event is vague, which serves to place more focus, or emphasis on the subject, the thing. And that's a good thing when you're asking a question: Don't be too direct. It's not polite. Leave the question open for the listerner/reader to fill in with information they feel they'd like to offer. Using "Did" limits a persons reply, not to mention assumes, or presupposes that you know the full details.
 "Did you ever think about wearing contact lenses?"
This is not as polite as . It's direct, delimiting: It limits the event to a specific time. In other words, "Did" expresses a specific time, so using it could send the message, you had time to think about it, so why didn't you? (agh, it's kind of rude, wouldn't you agree?)
In short, "Did" limits an event to a specific time of reference, whereas "Have -ed", in not making reference to time at all, is unlimited in its scope. It leaves the window of time wide open. Its reference to time is vague, and that's what makes it so popular!
Have you eaten? (Vague reference to time; the thing, eating, is in focus)
Did you eat? (Specific reference to time; the event, both its beginning and its end, are in focus.)
All the best,
- For Teachers